SogeBot - Twitch Bot

Free SogeBot - Twitch Bot 12.4.3


  • Added custom variables registry and updated custom variable widget
  • Note: you need to recreate your variables
  • Added $!_customvar filter with forcefully silenced set message
  • $_customvar and $!_customvar now accept + and - as params to increment and decrement by one
  • Overhaul of image carousel overlay, more settings for each image
  • Note: you will need to reupload your images to image carousel as they will not be stored as files but in db
  • Added type clip to be able to play in alerts
  • Clip creation and play through overlay/alerts
    • Note: if you want to use clip creation, re-do your oauth (need clips:edit permission)
  • Trigger events by keywords
  • [b30b1ee] lib/commons: Remove reduntant toLowerCase()
  • [5fe09dd] system/moderation: Add .me as domain suffix
  • [57049be] lib/users: Fix UI filtering of active users
  • [c6010bc] tools/migrate: Remove not used from user collection
  • [10facab] system/points: Save points time as date
  • [28cbfa6] ui: Fix NaN when viewers value is hidden
  • [d2ea7dd] widget/twitch: Set protocol http/https as appropriate
  • [15d461b] libs/users: Fix ui active filtering
  • [0add586] overlay/alert: Add clip type support
  • [9fe49cb] lib/panel: Fix set of domain access if contains whitespaces
  • [11f55be] system/bet: Add more accurate error message
  • [e77dbd9] lib/cache: Use cache.titles collection instead of cache
  • [b7e7246] cluster: Fix incorrect set of online user on message
  • [4b99edb] lib/api: Trigger only reset events on stream start
  • [c156af7] lib/events: Fix placebo event reset
  • [9380066] lib/message: Fix custom variable in eval
  • [0fb9038] various: Fix propagation of quiet
  • [b7f2737] lib/message: Add $!_cvar and + and **params support
  • [88fe282] chore: Create
  • [222ecee] lib/panel: Use bot username as bot name in panel
  • [cf03447] lib/message: Fix inc/dec when variable is saved as string
  • [3259bfa] **Update
  • [2e5bf7a] widget/customvariables: Fix error onSave
  • [5d1d31e] overlay/imageCarousel: Extend configurability
  • [767d14d] widget/custom_variables: Fix variable save if name contains only numbers
  • [6b574e5] system/bets: Fix index and options list
  • [936800f] lib/users: Fix updating user message count
  • [bfda15a] lib/message: Fix variable set if url() return string
  • [ef31333] ui: Fix translation for 'create and use a new game' input
  • [0e8f166] chore: Update
  • [f9d5838] chore: Update dependencies
  • [26679e5] overlay/alerts: Fix regexp cutting part of url if contain =
  • [ed77eee] lib/events: Add keyword-send-x-times event
  • [ad53271] lib/events: Add create-a-clip and create-a-clip-and-play-replay events
  • [9f1e860] overlay/alerts: Fix data extract when using another =
  • [e5a25e3] chore: revert snekfetch version to 3.6.4
  • [ed9f1b4] lib/message: Force return empty qs if param is null
  • [42ab4c9] main: 1 cpu by default if not specified in config
  • [af94090] locale/cs: Fix $winner for fightme
  • [eed5911] lib/customvariables: Add custom variables library
  • [4b5fec1] chore: Update AUTHORS
Contains only hotfix for processing messages affecting mainly mongodb

  • [96d09ee] main: Fix incorrect call to resend message to worker
eval filter

  • Added url() function, see eval documentation about usage
  • [6063582] system/keywords: Fix sender variable as string and not object
  • [c4d8248] lib/message: Add url() function to eval
  • [af51da1] lib/logs: Update datetime format to use local time
  • [ce3bec4] main: Fix incorrect checking user on join/part
  • [c80285c] lib/api: Add clearTimeout for better garbage collection
  • [294099b] database/master: Add clearTimeout too free gc
  • [909b06f] lib/currency: Add clearTimeout to free gc
  • [ef49807] lib/event: Add clearTimeout to free gc
  • [8fcd58e] games/heist: Add clearTimeout to free gc
  • [819071f] system/bets: Add clearTimeout to free gc
  • [e679e80] main: Add clearTimeout to free gc
  • [95d958b] lib/users: Add clearTimeout to free gc
  • [46d585f] lib/webhooks: Add clearTimeout to free gc
  • [2516700] integration/spotify: Add clearTimeout to free gc
  • [e087f0e] system/gambling: Add clearTimeout to free gc
  • [b061cb8] system/points: Add clearTimeout to free gc
  • [5881374] system/raffles: Add clearTimeout to free gc
  • [0656ee0] system/timers: Add clearTimeout to free gc
  • [04dcfb8] perf/sockets: Remove from several calls
  • [1e33902] cluster: Initialize debug functions only once
  • [e966f63] lib/api: Initialize debug functions only once
  • [bd54c4f] database/master: Initialize debug functions only once
  • [dcb3046] main: Initialize debug functions only once
  • [7696341] lib/configuration: Initialize debug functions only once
  • [1c18cc8] lib/parser: Initialize debug functions only once
  • [d5f9c2f] system/bets: Initialize debug functions only once
  • [5dd21e5] system/moderation: Initialize debug functions only once
  • [9185f7f] lib/timeout: Add recursive() to use for recursive functions with wait
  • [07a9810] various: Change recursive interval calls with timeout.recursive()
  • [92d17ae] lib/timeout: Properly cleanup timeout after clear
  • [e87b7d0] package: 7.4.2
  • Fixed alias system causing cpu lock and infinite loop
  • [5c1f037] database/nedb: Remove index on startup
  • [2fb159d] lib/message: Fix undefined (
  • [b7d112c] system/bets: Add options to some messages
  • [4cddc1c] system/alias: Check if parsed message contain command
  • overlays
    • Added facebook-like animation for emotes fade out
  • ui
    • Toggle to hide or show New chatters, Max viewers and Current viewers
  • performance
    • Fixed potential database memory leak
  • response filters
  • [5155a43] system/gambling: Change $sender to $winner for noContestant
  • [3da2d94] ui/highlights: Remove 'v' from beginning of video id
  • [cebe083] overlay/emotes: Add facebook-like animation
  • [b67986d] tool/migrate: Set version to 999.9.9-SNAPSHOT if called directly
  • [a212583] database/mongodb: Remove dropDups as it is not supported anymore
  • [efb2fbb] database/mongodb: Create indexes only on cluster
  • [7541346] tools/cleanup: Revert duplicate user clean
  • [6a7848d] lib/users: Move messages stats to own collection
  • [c87ceea] widget/chat: Remove viewer count from tab
  • [68fd049] ui/dashboard: Toggle hide/show viewers in quick stats
  • [97661b6] Update issue template with links to fider
  • [e4ed33c] lib/users, ui/viewers: Change sorting to be server side
  • [a752f87] database/master: Change setTimeout for returnData
  • [0d40f7e] system/highlight: Fix incorrect api.stats call and api type
  • [4cd5133] lib/api: Move loop timeout call after everything is done
  • [27fd102] lib/api: Wait until all events are done before interval call
  • [5230fe6] main: Send message to another worker then last one
  • [32ce34b] database/master: Fix potential memory leak
  • [fc54bad] lib/api: Add timeout refresh to catch
  • [ddfe91b] lib/api: Revert wait for join/part event
  • [b748f57] tool/commit: Update commit changelog style
  • [b65c790] system/bets: Fix incorrect message on bet close
  • [c4ccd09] system/bet: Fix error when parsing without options
  • [10e378d] widget/bets: Fix updates of widget data
  • [5248fba] travis: Update NodeJS version to 10.x
  • [0ffe603] database: Use master controller only on single instanced dbs
  • [d306f43] database/master: Fine tune timeouts for sendRequest and returnData
  • [90e1b46] system/bets: Refactor of bet system
  • [125348a] lib/permissions: Fix slow UI response on permission change
  • [44a9142] widget/cmdboard: Fix widget behaviour
  • [fbd8b51] widgets:: Drag widgets only by header
  • [f57cc0c] lib/api: Move join/part event handlers at the end
  • [ebb359c] database/master: Remove retry and cleanup
  • [c0dd149] lib/parser: Populate list only at parser init
  • [94d5317] main: Add warning if message parse took more than 1000ms
  • [e0040b3] widgets/bets: Update chart only if dataset changed
  • [b1ae26e] widget/cmdboard: Fix displayAs on refresh
  • [1017fa9] lib/api: Update follower update interval to use timeout
  • [ff63e84] widget/bets: Fix refund when using non english lang
  • [c609a4c] system/moderation: Fix return of empty blacklist/whitelist
  • [6d717d8] database/nedb: Fix creation of indexes
  • [5ba74be] lib/commons: Fix send message if client is not properly connected
  • [64bb27e] lib/commons: Simplify code for workers
  • [80c2ffc] lib/commons: Retry only once for message send
  • [1f33a20] libs: Fix several incorrect log error calls
  • [4e415c5] lib/twitch: Fix !game and !title commands without arguments
  • [e47016a] lib/parser: Add debug message after parsers are done
  • [aa7cd30] system/alias: Fix running alias if it point to same alias !me -> !me
  • [30f0bcc] widgetr/raffles: Move pick a winner after input
  • [37e716d] widget/raffles: Add popout
  • [de02984] system/raffles: Announce only if stream is online
  • [9929254] widget/bets: Reset dataset when bet is closed
  • [a071e12] various: Remove not intended console.log
  • [21b75ed] overlay/bets: Add bet index to overlay
  • [2b0b49c] lib/api: Set values on stream offline instead of online
  • [7209265] lib/commons: Fix sending message when debug is set to console
  • [0c95b50] lib/message: Fix if filter used with other params like random
  • [90c91c3] system/highlight: Fix !highlight not working on worker
  • [63c0061] lib/message: Add new global event filters
  • [5a41614] system/bets: Fix incorrect user amount when closing bet
  • [96c0456] locale/cs: Change points to body
  • [4ffe2fe] system/moderation: Fix cleanup of warnings and warning count
  • [2a123e7] lib/message: Improve eval performance
  • [dcc6ef6] lib/api: Add more data to stats
  • [97efc8d] lib/webhooks: Add check for channelId to stream event
  • [29755f3] lib/message: Exclude Math.random, _.random from random check
  • [f9969b0] integration/donationalerts: Fix amount to have fixed float number
  • [8569b44] integration/streamlabs: Fix amount to have fixed float number
If you have issues with bot startup due duplication keys issues, please run through cleanup, node tools/cleanup.js

Example of error
(node:14592) UnhandledPromiseRejectionWarning: MongoError: E11000 duplicate key error collection: icebot_db.users index: username_1 dup key: { : "boonee007" }
at /home/bots/icebot/node_modules/mongodb-core/lib/connection/pool.js:598:61
at authenticateStragglers (/home/bots/icebot/node_modules/mongodb-core/lib/c onnection/pool.js:516:16)
at Connection.messageHandler (/home/bots/icebot/node_modules/mongodb-core/li b/connection/pool.js:552:5)
at emitMessageHandler (/home/bots/icebot/node_modules/mongodb-core/lib/conne ction/connection.js:309:10)
at Socket. (/home/bots/icebot/node_modules/mongodb-core/lib/conne ction/connection.js:452:17)
at Socket.emit (events.js:180:13)
at addChunk (_stream_readable.js:269:12)
at readableAddChunk (_stream_readable.js:256:11)
at Socket.Readable.push (_stream_readable.js:213:10)
at TCP.onread (net.js:578:20)
(node:14592) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejectio n id: 1)
(node:14592) [DEP0018] DeprecationWarning: Unhandled promise rejections are depr ecated. In the future, promise rejections that are not handled will terminate th e Node.js process with a non-zero exit code.

  • 1d1c709 database/mongodb: Remove dropDups as it is not supported anymore
  • d59c784 database/mongodb: Create indexes only on cluster
  • 2b7ce8e tools/cleanup: Revert duplicate user clean
  • Added gamblingMinimalBet to set minimal bet for !gamble
  • Added duelMinimalBet to set minimal bet for !duel
  • Added duelDuration to set duration of !duel
  • Added (stream|#|game), (stream|#|title), (stream|#|viewers) filters, where # is channel name
  • 6eb496f various: Remove all api.stats references
  • 1007329 ui/viewers: Improved date handling
  • ea09f9a ui/viewers: Fix 'Invalid date' when saving empty dates
  • e7ef446 lib/message: Fix incorrect sender username pass for parse process
  • 4565354 lib/twitch: Add sender.username check for lastseenUpdate
  • 6f7a471 system/raffles: Add sender.username check for participate
  • 757b1bb tool/cleanup: Remove duplicates cleanup
  • 9ca31e0 ui/timers: Add margins for timer cards
  • bca150b db/mongodb: Add unique option for user usernames
  • cdb0db1 various: Force bot username to lower case
  • 71c369c system/points: Fix time check when adding points
  • 29af09c system/points: Add check if interval or points are set to 0
  • 40bcfc4 system/points: Add user.points collection
  • dce905c tool/migrate: Remove points from users collection
  • a7434b5 system/points: Compact only >0 points
  • 195f407 lib/api: Fix incorrect id check for follower update
  • b418284 main: Fix undefined username when checking follower state
  • e73a5a6 lib/twitch: Fix incorrect points in !top points command
  • f6312f7 lib/translate: Add error message when language doesn't exist
  • 59c3f25 locale/cs: Lowercased increment of custom variable
  • 6021887 lib/events: Save inc/dec variable's value as string
  • ebf07f5 lib/configuration: Fix widget output in !_debug
  • 2c4ee1f system/gambling: Fix points check on !gamble
  • 109ac71 various: Remove not needed debug console.log
  • 915f6d5 widget/custom_variables: Fix removal of watched variable if integer
  • 4daa396 lib/message: Fix if filter contains $param
  • 817d7a3 system/points: Compact points only if stream offline
  • 3846189 system/gambling: Add gamblingMinimalBet settings
  • b77a845 system/points: Compact only offline users when stream online
  • d5c8123 system/gambling: Add duelDuration settings
  • 5f7279a system/gambling: Add duelMinimalBet settings
  • 2213f31 tool/migrate: Remove points from user in collection
  • 01add30 lib/commons: Retry sendMessage if action or say failed
  • 911e903 locale/en: Fix typo for duel minimal bet
  • ecf5aea system/points: Add null check for usernames
  • 7143413 package: deps update
  • 6767018 system/price: Remove redundant number checks
  • 997027a tool/migrate: Fix NaN issue when migrated
  • cc5f196 system/alias: Fix aliases with params being ignored
  • 392a329 test/price: Add price check tests
  • 8622188 lib/api: Fix incorrect created_at format for users
  • 92e384e tool/migrate: Remove incorrect created_at from users
  • 53460e3 system/points: Set points to 0 if below 0
  • 00e6623 system/gambling: Fix incorrect !gamble lose points in message
  • db64dd1 database/mongodb: Drop duplicates on unique index creation
  • 52561f7 lib/users: Merge will move points
  • 9ec3fb4 system/gambling: Fix !fightme timeouts
  • 7763f0d lib/twitch: Fix !top points calculation
  • 0d2c3fb system/gambling: Fix deletion of !duel users when new user is added
  • 1f522db system/gambling: Fix incorrect variable in error
  • 937b584 system/gambling: Remove redundant toString
  • 58e5d0d lib/twitch: Fix exception when dataset is empty
  • c83ba29 lib/message: Add stream filters
  • c05561e tool/migrate: Remove user before reinserting
  • 722affd database/nedb: Add users.points indexing
  • 3afac23 database/mongodb: Add users.points indexing
  • 84dafdb system/points: Fix saving points for undefined user if not in collection
  • 9dc4905 lib/twitch: Fix users duplication on !top points
  • c9b3d9f system/points: Change logic of points compact
  • e6f00fa lib/message: Fix (!#) and (!!#) filter on master
  • 44f4417 system/gambling: Fix noContestant sender name to winner
  • events:
    • Add increment and decrement operations for custom variables
  • filters:
    • Add $!param filter for non-required parameters (will return n/a on empty)
  • d025705 tool/commits: List commits as unordered list
  • f68755c integration/streamlabs: Add debug messages
  • 564e9c1 integration/streamlabs: Don't update and current tips if test
  • 9e8bfcc lib/api: Remove data saving from error
  • 18e3a2d system/highlights: Fix incorrect saving of highlights
  • abc93b2 lib/message: Set sender attribute as null when not defined
  • 9367e03 lib/events: Add increment and decrement of $_ operations
  • 780c7df lib/events: Update title only if custom variable is in title
  • 99d0fd9 lib/message: Update title only if custom variable is in title
  • d87ec1d lib/twitch: Simplify !followers and !subs
  • 7e789f3 tool/nedb-to-mongodb: Add simple migration tool from nedb to mongodb
  • d90d203 tool/nedb-to-mongodb: Remove unused require
  • f7e86e1 ui/viewers: Remove points input and data if points system disabled
  • bbf90fc db/master: Retry data send to worker until its ready
  • 8d7f571 db/master: Fix requests were not correctly sent
  • fec7558 lib/translate: Fix incorrect loading of custom translations
  • 6f69045 lib/message: Fix $param behavior and add not required $!param
  • b9087e3 ui/commands: Add $param and $!param filters
  • 75bf88f package: Update dependencies
  • 8bbbe6d lib/api: Revert API stats cleanup
  • 4b13f36 lib/currency: Change rate provider to
  • 273a82a lib/commons: Warn only if there is text to warn
  • 89648ff ui/cmdboard: Add switcher list, grid
  • e16a901 lib/api: Update online timestamp if current timestamp is later than it should be
  • 7abaf12 lib/api: Remove api.stats collection and saving
  • memory leak:
    • Fixed memory leak introduced by cluster implementation
  • performance:
    • Fixed several bot hard locks
  • 17fcb90 tools/migrate: Fix migration errors
  • a1c3b82 package: fix missing cluster.js in zip
  • b493a90 lib/twitch: Fix undefined currency on !top tips
  • 273d28c tests/moderation: Add !permit multiple link test
  • d30b763 various: Fix missing await on some configuration values
  • 5ecc781 libs/api: Fix incorrect account created_at fetch
  • 8c2690a lib/configuration: Fix !_debug errors
  • d589034 lib/api: Make all variables permanent
  • e34e2be overlay/stats: Fix sending incorrect data
  • f66b3fc integration/donationalerts: Fix saving tips when stream is online
  • 59c19b6 integration/streamlabs: Fix saving tips when stream is online
  • 0be14c6 overlay/credits: Fix get of current game and status
  • ae7f5c0 lib/webhooks: Fix update of game and status on stream start
  • 6e72ec5 lib/message: Fix get of game and status filters
  • a4ad421 main: Fix current bit increment when stream online
  • b63cf17 lib/events: Fix check on current viewers
  • ee56838 lib/stats: Expire api.stats automatically after 24h
  • 81f6b06 system/cooldown: Fix not respecting disableCooldownWhispers value
  • 559eb43 db/master: Cleanup expired data periodically
  • 4b9222c lib/api: Move raw status logic after online check
  • c0bfab3 db/master: Cleanup data as soon as they are finished
  • 755f0f5 db/master: Up timestamp threshold to delete data
  • c72139a db/master: Fix incorrect error messages
  • e614f7b db/master: Remove dbAck
  • 99d7ca7 db/master: Add retries for getting data from worker
  • 6ca0461 system/keyword: Fix parser being enabled regardless system status
  • b1e9ded db/all: Remove threading locks
  • 20bc74c cluster: Add debug messages
  • 68e26f6 lib/api: Mute unofficial chatters errors in log
  • 0cc315f various: Move online users status to collection
  • df78279 lib/users: Fix set all users as offline
  • 94db688 lib/users: Fix watch time increment when user is not existing
  • dccbfff db/master: Run cleanup faster
  • 678a6bc db/master: Fix incorrect deletion of finished calls
  • 72b7af6 lib/api: Add wait for widgets on chatters
  • 107e050 db/mongodb: Drop Index on startup
  • ebf8478 db/mongodb: Check if collection is existing before dropIndex
  • e5ee7bf various: Fix incorrect use of append -> push
  • b89e4c7 lib/twitch: Add missing await
  • a56a35e lib/twitch: Fix !game and !title on cluster worker
  • dc316a9 system/commands: Fix remove of upper case command from param
  • fcd1e38 lib/message: Remove sender from random filters
  • 677d08b lib/message: Exclude bot from random filter
  • e75ebe6 lib/users: Fix incorrect return state of user activity
  • 765372c db/mongodb: Add insertMany support
  • 82855ef lib/api: Add bulk operations to prevent bot lock
6c8b9e1 integration/streamlabs: Fix saving tips when stream is online
770d35f integration/donationalerts: Fix saving tips when stream is online