diff --git a/CHANGELOG.md b/CHANGELOG.md index e99b46c..1c645f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. If there is a `Changed` section please read carefully, as this often means that you will need to adapt your `config.yml`, otherwise the bot might fail to start. +## [1.7.0] - 2022-08-27 + +### Added 1.7.0 + +* Option to disable functions in `config.yml` + ## [1.6.1] - 2022-08-25 ### Fixed 1.6.1 diff --git a/README.md b/README.md index d696171..48f49f1 100644 --- a/README.md +++ b/README.md @@ -181,6 +181,7 @@ Connect to the configured Twitch channel and send a message starting with `!tts` Additional commands (broadcaster and mods only) are: * `!ping`: Check if bot is alive (the bot should reply: `Pong!`) +* `!version`: Print the bot version * `!toff`: Turn TTS off (will also empty the current TTS queue) * `!ton`: Turn TTS back on * `!dtts `: Disable TTS for the given user @@ -190,6 +191,21 @@ Additional commands (broadcaster and mods only) are: ### Additional features +You can enable/disable any feature in your `config.yml`: + +``` lang=yaml +features: + quote: False + pick: False + vote: False + wiki: False + random: False + version: True + ping: True +``` + +The default is enabled. + #### !quickvote A simple vote system. diff --git a/config-dist.yml b/config-dist.yml index b3a3061..846ec7c 100644 --- a/config-dist.yml +++ b/config-dist.yml @@ -16,6 +16,15 @@ bot: message_length: 200 # Max. TTS message length language: de # Language for wikipedia +features: + quote: True + pick: True + vote: True + wiki: True + random: True + version: True + ping: True + messages: # Things the bot can send as chat message toff: "TTS is now inactive." ton: "TTS is now active." diff --git a/tts.exe b/tts.exe index 6a10837..75bb731 100644 Binary files a/tts.exe and b/tts.exe differ diff --git a/tts.py b/tts.py index d057cfd..63ff883 100644 --- a/tts.py +++ b/tts.py @@ -179,20 +179,21 @@ class IRC: self.Commands.tts(self, message, tags) return - if msg.startswith('!addquote'): - logging.debug("!addquote command detected") - self.Commands.addquote(self, tags, msg) - return - - if msg.startswith('!wiki'): + if msg.startswith('!wiki') and conf['FEATURE']['WIKI']: logging.debug("!wiki command detected") self.Commands.wiki(self, tags, msg) return - if msg.startswith('!smartquote') or msg.startswith('!sq'): - logging.debug("!smartquote command detected") - self.Commands.quote(self, tags, msg) - return + if conf['FEATURE']['QUOTE']: + if msg.startswith('!addquote'): + logging.debug("!addquote command detected") + self.Commands.addquote(self, tags, msg) + return + + if msg.startswith('!smartquote') or msg.startswith('!sq'): + logging.debug("!smartquote command detected") + self.Commands.quote(self, tags, msg) + return def get_tags(self, resp): """ Strip tags from response """ @@ -236,27 +237,23 @@ class IRC: user = tags['user'] if 'broadcaster' in badges or 'moderator' in badges: - if msg.startswith('!ping'): + if msg.startswith('!ping') and conf['FEATURE']['PING']: logging.debug("Ping check received.") self.sendmsg(conf['IRC_CHANNEL'], "@"+str(user), "Pong!") - elif msg.startswith('!version'): + elif msg.startswith('!version') and conf['FEATURE']['VERSION']: logging.debug("!version command detected") self.sendmsg(conf['IRC_CHANNEL'], "@"+str(user), VERSION) - elif msg.startswith('!pick'): + elif msg.startswith('!pick') and conf['FEATURE']['PICK']: logging.debug("!pick command detected") self.Commands.pick(self, msg) - elif msg.startswith('!dtts'): - logging.debug("!dtts command detected") - self.Commands.dtts(self, msg) - - elif msg.startswith('!random'): + elif msg.startswith('!random') and conf['FEATURE']['RANDOM']: logging.info('!random command detected') self.Commands.random(self, msg) - elif msg.startswith('!quickvote'): + elif msg.startswith('!quickvote') and conf['FEATURE']['QUOTE']: logging.info("!quickvote command detected") self.Commands.quickvote(self, msg) @@ -264,6 +261,10 @@ class IRC: logging.debug("!ptts command detected") self.Commands.ptts(self, msg) + elif msg.startswith('!dtts'): + logging.debug("!dtts command detected") + self.Commands.dtts(self, msg) + elif msg.startswith('!usermap'): logging.info('!usermap command detected') self.Commands.usermap(self, msg) @@ -1159,6 +1160,15 @@ def load_config(): conf['MESSAGE']['WIKI_TOO_MANY'] = cfg.get('messages', {}).get('wiki_too_many', "Sorry, there are too many possible results. Try a more narrow search.") conf['MESSAGE']['WIKI_NO_RESULT'] = cfg.get('messages', {}).get('wiki_no_result', "Sorry, there was an error fetching the wikipedia answer.") + conf['FEATURE'] = {} + conf['FEATURE']['WIKI'] = cfg.get('features', {}).get('wiki', True) + conf['FEATURE']['PICK'] = cfg.get('features', {}).get('pick', True) + conf['FEATURE']['VOTE'] = cfg.get('features', {}).get('vote', True) + conf['FEATURE']['QUOTE'] = cfg.get('features', {}).get('quote', True) + conf['FEATURE']['RANDOM'] = cfg.get('features', {}).get('random', True) + conf['FEATURE']['VERSION'] = cfg.get('features', {}).get('version', True) + conf['FEATURE']['PING'] = cfg.get('features', {}).get('ping', True) + conf['USERMAP'] = cfg.get('usermapping', []) if 'whitelist' in cfg: @@ -1302,7 +1312,7 @@ if __name__ == "__main__": logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(module)s %(threadName)s %(levelname)s: %(message)s') sys.tracebacklimit = 3 - VERSION = "1.6.1" + VERSION = "1.7.0" conf = {} tts_done = [] msg_queue_raw = []