Renamed conf variable

This commit is contained in:
gpkvt 2022-08-27 14:04:04 +02:00
parent 5d2c03cc0f
commit c65e3b86b1
1 changed files with 161 additions and 161 deletions

322
tts.py
View File

@ -1,6 +1,6 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# pylint: disable=line-too-long,too-many-lines
# pylint: disable=bare-except
"""
TwitchTTS
@ -53,7 +53,7 @@ class IRC:
self.irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.tts_denied = []
self.tts_allowed = []
self.tts_status = conf['TTS_STARTENABLED']
self.tts_status = CONF['TTS_STARTENABLED']
self.quickvote_status = False
self.pick_status = False
self.votemsg = False
@ -63,8 +63,8 @@ class IRC:
self.picknumber = 1
self.pickcount = 0
if 'WHITELIST_USER' in conf:
self.tts_allowed = conf['WHITELIST_USER']
if 'WHITELIST_USER' in CONF:
self.tts_allowed = CONF['WHITELIST_USER']
def connect(self, server, port, channel, botnick, botpass):
""" Connect to Twitch IRC servers """
@ -179,12 +179,12 @@ class IRC:
self.Commands.tts(self, message, tags)
return
if msg.startswith('!wiki') and conf['FEATURE']['WIKI']:
if msg.startswith('!wiki') and CONF['FEATURE']['WIKI']:
logging.debug("!wiki command detected")
self.Commands.wiki(self, tags, msg)
return
if conf['FEATURE']['QUOTE']:
if CONF['FEATURE']['QUOTE']:
if msg.startswith('!addquote'):
logging.debug("!addquote command detected")
self.Commands.addquote(self, tags, msg)
@ -237,23 +237,23 @@ class IRC:
user = tags['user']
if 'broadcaster' in badges or 'moderator' in badges:
if msg.startswith('!ping') and conf['FEATURE']['PING']:
if msg.startswith('!ping') and CONF['FEATURE']['PING']:
logging.debug("Ping check received.")
self.sendmsg(conf['IRC_CHANNEL'], "@"+str(user), "Pong!")
self.sendmsg(CONF['IRC_CHANNEL'], "@"+str(user), "Pong!")
elif msg.startswith('!version') and conf['FEATURE']['VERSION']:
elif msg.startswith('!version') and CONF['FEATURE']['VERSION']:
logging.debug("!version command detected")
self.sendmsg(conf['IRC_CHANNEL'], "@"+str(user), VERSION)
self.sendmsg(CONF['IRC_CHANNEL'], "@"+str(user), VERSION)
elif msg.startswith('!pick') and conf['FEATURE']['PICK']:
elif msg.startswith('!pick') and CONF['FEATURE']['PICK']:
logging.debug("!pick command detected")
self.Commands.pick(self, msg)
elif msg.startswith('!random') and conf['FEATURE']['RANDOM']:
elif msg.startswith('!random') and CONF['FEATURE']['RANDOM']:
logging.info('!random command detected')
self.Commands.random(self, msg)
elif msg.startswith('!quickvote') and conf['FEATURE']['QUOTE']:
elif msg.startswith('!quickvote') and CONF['FEATURE']['QUOTE']:
logging.info("!quickvote command detected")
self.Commands.quickvote(self, msg)
@ -278,19 +278,19 @@ class IRC:
msg_queue.clear()
msg_queue_raw.clear()
self.tts_status = False
self.sendmsg(conf['IRC_CHANNEL'], "@"+str(user), conf['MESSAGE']['TOFF'])
self.sendmsg(CONF['IRC_CHANNEL'], "@"+str(user), CONF['MESSAGE']['TOFF'])
elif msg.startswith('!ton'):
logging.info('TTS is now turned on')
msg_queue.clear()
msg_queue_raw.clear()
self.tts_status = True
self.sendmsg(conf['IRC_CHANNEL'], "@"+str(user), conf['MESSAGE']['TON'])
self.sendmsg(CONF['IRC_CHANNEL'], "@"+str(user), CONF['MESSAGE']['TON'])
def check_subonly(self, tags):
""" subonly """
if not conf['IRC_SUBONLY']:
if not CONF['IRC_SUBONLY']:
return False
subscriber = tags['subscriber']
@ -302,13 +302,13 @@ class IRC:
return False
logging.debug('TTS is sub-only')
self.sendmsg(conf['IRC_CHANNEL'], "@"+str(user), conf['MESSAGE']['SUBONLY'])
self.sendmsg(CONF['IRC_CHANNEL'], "@"+str(user), CONF['MESSAGE']['SUBONLY'])
return True
def check_modonly(self, tags):
""" modonly """
if not conf['IRC_MODONLY']:
if not CONF['IRC_MODONLY']:
return False
badges = tags['badges']
@ -319,13 +319,13 @@ class IRC:
return False
logging.debug('TTS is mod-only')
self.sendmsg(conf['IRC_CHANNEL'], "@"+str(user), conf['MESSAGE']['MODONLY'])
self.sendmsg(CONF['IRC_CHANNEL'], "@"+str(user), CONF['MESSAGE']['MODONLY'])
return True
def check_tts_disabled(self, user):
""" Check if TTS is disabled """
if not self.tts_status:
self.sendmsg(conf['IRC_CHANNEL'], "@"+str(user), conf['MESSAGE']['DISABLED'])
self.sendmsg(CONF['IRC_CHANNEL'], "@"+str(user), CONF['MESSAGE']['DISABLED'])
return True
logging.debug('TTS is enabled')
@ -334,8 +334,8 @@ class IRC:
def check_msg_too_long(self, message, user):
""" Check if message is too long """
if message['length'] > conf['IRC_TTS_LEN']:
self.sendmsg(conf['IRC_CHANNEL'], "@"+str(user), conf['MESSAGE']['TOO_LONG'])
if message['length'] > CONF['IRC_TTS_LEN']:
self.sendmsg(CONF['IRC_CHANNEL'], "@"+str(user), CONF['MESSAGE']['TOO_LONG'])
return True
logging.debug('Check length: Message is ok')
@ -345,7 +345,7 @@ class IRC:
""" Check if user is on denied list """
if user in self.tts_denied:
logging.info("%s is not allowed to use TTS", user)
self.sendmsg(conf['IRC_CHANNEL'], "@"+str(user), conf['MESSAGE']['DENIED'])
self.sendmsg(CONF['IRC_CHANNEL'], "@"+str(user), CONF['MESSAGE']['DENIED'])
return True
logging.debug("%s is allowed to use TTS", user)
@ -354,12 +354,12 @@ class IRC:
def check_whitelist(self, user):
""" Check Whitelist """
if conf['WHITELIST']:
if CONF['WHITELIST']:
if user not in self.tts_allowed:
logging.debug("tts_allowed: %s", self.tts_allowed)
self.sendmsg(
conf['IRC_CHANNEL'],
"@"+str(user), conf['MESSAGE']['WHITELISTONLY']
CONF['IRC_CHANNEL'],
"@"+str(user), CONF['MESSAGE']['WHITELISTONLY']
)
return False
return True
@ -491,8 +491,8 @@ class IRC:
date = time.strftime("%d.%m.%Y")
try:
token = conf['IRC_OAUTH_TOKEN'].replace('oauth:','')
login = conf['IRC_CHANNEL'].replace('#','')
token = CONF['IRC_OAUTH_TOKEN'].replace('oauth:','')
login = CONF['IRC_CHANNEL'].replace('#','')
api_endpoint = "https://api.twitch.tv/helix/users?login="+str(login)
headers = {
'Content-type': 'application/x-form-urlencoded',
@ -514,7 +514,7 @@ class IRC:
game = data['data'][0]['game_name']
quote = f"#{nol}: \"{quote[1]}\" -{username}/{game} ({date})\n"
except: # pylint: disable=bare-except
except:
logging.warning('Could not get metadata for quote')
quote = f"#{nol}: \"{quote[1]}\" -{username} ({date})\n"
@ -522,7 +522,7 @@ class IRC:
with open("quotes.txt", "ab") as file:
file.write(quote.encode('utf-8'))
msg = f"{conf['MESSAGE']['QUOTE_ADDED_PREFIX']} #{nol} {conf['MESSAGE']['QUOTE_ADDED_SUFFIX']}"
msg = f"{CONF['MESSAGE']['QUOTE_ADDED_PREFIX']} #{nol} {CONF['MESSAGE']['QUOTE_ADDED_SUFFIX']}"
raw_msg = {
"TTS": True,
@ -530,25 +530,25 @@ class IRC:
"badges": True,
"subscriber": True,
"msgid": True,
"user": conf['IRC_USERNAME'],
"length": conf['IRC_TTS_LEN'],
"user": CONF['IRC_USERNAME'],
"length": CONF['IRC_TTS_LEN'],
"queuetime": datetime.datetime.now(),
"timestamp": str(time.time_ns())
}
msg_queue[raw_msg['timestamp']] = [raw_msg['user'], raw_msg['msg']]
IRC.sendmsg(self, conf['IRC_CHANNEL'], "@"+str(user), msg)
IRC.sendmsg(self, CONF['IRC_CHANNEL'], "@"+str(user), msg)
def wiki(self, tags, msg):
""" !wiki command """
try:
user = tags['user']
wikipedia.set_lang(conf['WIKI_LANG'])
wikipedia.set_lang(CONF['WIKI_LANG'])
msg = msg.replace('!wiki', '').strip()
wikiresult = wikipedia.summary(msg, sentences=3)
IRC.sendmsg(self, conf['IRC_CHANNEL'], "@"+str(user), wikiresult)
IRC.sendmsg(self, conf['IRC_CHANNEL'], "@"+str(user), wikipedia.page(msg).url)
IRC.sendmsg(self, CONF['IRC_CHANNEL'], "@"+str(user), wikiresult)
IRC.sendmsg(self, CONF['IRC_CHANNEL'], "@"+str(user), wikipedia.page(msg).url)
wikiresult = wikiresult.replace('==', '')
@ -559,16 +559,16 @@ class IRC:
"subscriber": True,
"msgid": True,
"user": 'wikipedia',
"length": conf['IRC_TTS_LEN'],
"length": CONF['IRC_TTS_LEN'],
"queuetime": datetime.datetime.now(),
"timestamp": str(time.time_ns())
}
msg_queue[raw_msg['timestamp']] = [raw_msg['user'], raw_msg['msg']]
except wikipedia.exceptions.DisambiguationError:
IRC.sendmsg(self, conf['IRC_CHANNEL'], "@"+str(user), conf['MESSAGE']['WIKI_TOO_MANY'])
except: # pylint: disable=bare-except
IRC.sendmsg(self, conf['IRC_CHANNEL'], "@"+str(user), conf['MESSAGE']['WIKI_NO_RESULT'])
IRC.sendmsg(self, CONF['IRC_CHANNEL'], "@"+str(user), CONF['MESSAGE']['WIKI_TOO_MANY'])
except:
IRC.sendmsg(self, CONF['IRC_CHANNEL'], "@"+str(user), CONF['MESSAGE']['WIKI_NO_RESULT'])
def quote(self, tags, msg = False):
""" !smartquote command
@ -627,8 +627,8 @@ class IRC:
if not 'quote' in vars():
logging.info('No quote found.')
quote = conf['MESSAGE']['QUOTE_NOT_FOUND']
IRC.sendmsg(self, conf['IRC_CHANNEL'], "", quote)
quote = CONF['MESSAGE']['QUOTE_NOT_FOUND']
IRC.sendmsg(self, CONF['IRC_CHANNEL'], "", quote)
return False
if not isinstance(quote, str):
@ -647,7 +647,7 @@ class IRC:
else:
logging.info('Sending quote to TTS')
logging.debug("Quote: %s", quote)
IRC.sendmsg(self, conf['IRC_CHANNEL'], "", quote)
IRC.sendmsg(self, CONF['IRC_CHANNEL'], "", quote)
quote = quote.rsplit('(', 1)[0]
@ -657,8 +657,8 @@ class IRC:
"badges": True,
"subscriber": True,
"msgid": True,
"user": conf['IRC_USERNAME'],
"length": conf['IRC_TTS_LEN'],
"user": CONF['IRC_USERNAME'],
"length": CONF['IRC_TTS_LEN'],
"queuetime": datetime.datetime.now(),
"timestamp": str(time.time_ns())
}
@ -676,7 +676,7 @@ class IRC:
try:
delay = msg.split(' ')[1]
except: # pylint: disable=bare-except
except:
delay = False
if delay:
@ -703,7 +703,7 @@ class IRC:
splitmsg = msg.split(" ")
username, *mappingname = splitmsg
mappingname = ' '.join(mappingname)
except: # pylint: disable=bare-except
except:
username = False
mappingname = False
@ -734,36 +734,36 @@ class IRC:
converted_picks = [str(element) for element in picks]
joined_picks = " ".join(converted_picks)
except: # pylint: disable=bare-except
except:
logging.error("There was an error during picking.")
joined_picks = False
if joined_picks:
raw_msg = {
"TTS": True,
"msg": conf['MESSAGE']['PICKRESULT'] +" "+ str(joined_picks),
"msg": CONF['MESSAGE']['PICKRESULT'] +" "+ str(joined_picks),
"badges": True,
"subscriber": True,
"msgid": True,
"user": conf['IRC_USERNAME'],
"length": conf['IRC_TTS_LEN'],
"user": CONF['IRC_USERNAME'],
"length": CONF['IRC_TTS_LEN'],
"queuetime": datetime.datetime.now(),
"timestamp": str(time.time_ns())
}
msg_queue[raw_msg['timestamp']] = [raw_msg['user'], raw_msg['msg']]
IRC.sendmsg(self,
conf['IRC_CHANNEL'], "",
conf['MESSAGE']['PICKRESULT']
CONF['IRC_CHANNEL'], "",
CONF['MESSAGE']['PICKRESULT']
)
IRC.sendmsg(self,
conf['IRC_CHANNEL'], "*",
CONF['IRC_CHANNEL'], "*",
joined_picks
)
else:
IRC.sendmsg(self,
conf['IRC_CHANNEL'], "*",
conf['MESSAGE']['PICKNONE']
CONF['IRC_CHANNEL'], "*",
CONF['MESSAGE']['PICKNONE']
)
self.pick_status = False
@ -783,8 +783,8 @@ class IRC:
logging.info("Will pick %s participants", self.picknumber)
IRC.sendmsg(self,
conf['IRC_CHANNEL'], "@chat",
conf['MESSAGE']['PICKSTART']
CONF['IRC_CHANNEL'], "@chat",
CONF['MESSAGE']['PICKSTART']
)
return
@ -802,23 +802,23 @@ class IRC:
if self.pollcount == 0:
logging.info("Nobody voted")
IRC.sendmsg(self, conf['IRC_CHANNEL'], "@chat", conf['MESSAGE']['VOTEEND'])
IRC.sendmsg(self, conf['IRC_CHANNEL'], "*", conf['MESSAGE']['VOTENOBODY'])
IRC.sendmsg(self, CONF['IRC_CHANNEL'], "@chat", CONF['MESSAGE']['VOTEEND'])
IRC.sendmsg(self, CONF['IRC_CHANNEL'], "*", CONF['MESSAGE']['VOTENOBODY'])
raw_msg = {
"TTS": True,
"msg": conf['MESSAGE']['VOTENOBODY'],
"msg": CONF['MESSAGE']['VOTENOBODY'],
"badges": True,
"subscriber": True,
"msgid": True,
"user": conf['IRC_USERNAME'],
"length": conf['IRC_TTS_LEN'],
"user": CONF['IRC_USERNAME'],
"length": CONF['IRC_TTS_LEN'],
"queuetime": datetime.datetime.now(),
"timestamp": str(time.time_ns())
}
msg_queue[raw_msg['timestamp']] = [raw_msg['user'], raw_msg['msg']]
logging.info('The result is: %s', conf['MESSAGE']['VOTENOBODY'])
logging.info('The result is: %s', CONF['MESSAGE']['VOTENOBODY'])
logging.debug('Votemsg: %s', msg)
self.quickvote_status = False
@ -828,31 +828,31 @@ class IRC:
logging.info("Counting votes")
count = 0
count = Counter(self.poll.values()).most_common(5)
IRC.sendmsg(self, conf['IRC_CHANNEL'], "@chat", conf['MESSAGE']['VOTEEND'])
IRC.sendmsg(self, CONF['IRC_CHANNEL'], "@chat", CONF['MESSAGE']['VOTEEND'])
logging.debug(count)
raw_msg = {
"TTS": True,
"msg": conf['MESSAGE']['VOTERESULT'] +" "+ str(count[0][0].replace('#','')),
"msg": CONF['MESSAGE']['VOTERESULT'] +" "+ str(count[0][0].replace('#','')),
"badges": True,
"subscriber": True,
"msgid": True,
"user": conf['IRC_USERNAME'],
"length": conf['IRC_TTS_LEN'],
"user": CONF['IRC_USERNAME'],
"length": CONF['IRC_TTS_LEN'],
"queuetime": datetime.datetime.now(),
"timestamp": str(time.time_ns())
}
msg_queue[raw_msg['timestamp']] = [raw_msg['user'], raw_msg['msg']]
logging.info('The result is: %s', conf['MESSAGE']['VOTERESULT'] +" "+ str(count[0]))
logging.info('The result is: %s', CONF['MESSAGE']['VOTERESULT'] +" "+ str(count[0]))
logging.debug('Votemsg: %s', msg)
for key, value in count:
IRC.sendmsg(
self,
conf['IRC_CHANNEL'], "*",
str(key)+" ("+str(value)+ " "+ conf['MESSAGE']['VOTES'] + ")"
CONF['IRC_CHANNEL'], "*",
str(key)+" ("+str(value)+ " "+ CONF['MESSAGE']['VOTES'] + ")"
)
self.quickvote_status = False
@ -865,11 +865,11 @@ class IRC:
self.votemsg = msg.split('!quickvote', 1)[1].strip()
if self.votemsg:
IRC.sendmsg(self,
conf['IRC_CHANNEL'], "@chat",
conf['MESSAGE']['VOTESTART'] + " (" + str(self.votemsg) + ")"
CONF['IRC_CHANNEL'], "@chat",
CONF['MESSAGE']['VOTESTART'] + " (" + str(self.votemsg) + ")"
)
else:
IRC.sendmsg(self, conf['IRC_CHANNEL'], "@chat", conf['MESSAGE']['VOTESTART'])
IRC.sendmsg(self, CONF['IRC_CHANNEL'], "@chat", CONF['MESSAGE']['VOTESTART'])
return
@ -906,8 +906,8 @@ class IRC:
"badges": True,
"subscriber": True,
"msgid": True,
"user": conf['IRC_USERNAME'],
"length": conf['IRC_TTS_LEN'],
"user": CONF['IRC_USERNAME'],
"length": CONF['IRC_TTS_LEN'],
"queuetime": datetime.datetime.now(),
"timestamp": str(time.time_ns())
}
@ -1021,7 +1021,7 @@ class HTTPserv(BaseHTTPRequestHandler):
self.send_header('Content-type', 'text/json')
self.end_headers()
usermap = conf['USERMAP']
usermap = CONF['USERMAP']
sorted_tts = {k: msg_queue[k] for k in sorted(msg_queue, reverse=True)}
logging.debug(usermap)
@ -1029,10 +1029,10 @@ class HTTPserv(BaseHTTPRequestHandler):
if key not in tts_done:
if msg_queue[key][0].lower() in usermap:
logging.debug('Using usermap for user: %s (%s)', msg_queue[key][0], usermap[msg_queue[key][0].lower()])
tts = {str(key): str(usermap[msg_queue[key][0].lower()]) + " " + str(conf['MESSAGE']['SAYS']) + ":" + str(msg_queue[key][1])}
tts = {str(key): str(usermap[msg_queue[key][0].lower()]) + " " + str(CONF['MESSAGE']['SAYS']) + ":" + str(msg_queue[key][1])}
else:
logging.debug('No usermap entry found for user: %s', msg_queue[key][0])
tts = {str(key): str(msg_queue[key][0]) + " " + str(conf['MESSAGE']['SAYS']) + ":" + str(msg_queue[key][1])}
tts = {str(key): str(msg_queue[key][0]) + " " + str(CONF['MESSAGE']['SAYS']) + ":" + str(msg_queue[key][1])}
tts_json = json.dumps(tts)
self.wfile.write(bytes(str(tts_json)+"\n", "utf-8"))
@ -1057,11 +1057,11 @@ class HTTPserv(BaseHTTPRequestHandler):
data['client_id'] = "ebo548vs6tq54c9zlrgin2yfzzlrrs"
data['response_type'] = "token"
data['scope'] = "chat:edit chat:read"
if conf['HTTP_PORT'] == 80:
if CONF['HTTP_PORT'] == 80:
data['redirect_uri'] = "http://localhost/token"
elif conf['HTTP_PORT'] == 8080:
elif CONF['HTTP_PORT'] == 8080:
data['redirect_uri'] = "http://localhost:8080/token"
elif conf['HTTP_PORT'] == 3000:
elif CONF['HTTP_PORT'] == 3000:
data['redirect_uri'] = "http://localhost:3000/token"
else:
self.send_response(500)
@ -1115,87 +1115,87 @@ def load_config():
for section in cfg:
try:
logging.debug('Fetching config: %s', section)
conf['IRC_CHANNEL'] = cfg.get('irc', {}).get('channel', False)
conf['IRC_USERNAME'] = cfg.get('irc', {}).get('username', False)
conf['IRC_OAUTH_TOKEN'] = cfg.get('irc', {}).get('oauth_token', False)
conf['IRC_SERVER'] = cfg.get('irc', {}).get('server', "irc.chat.twitch.tv")
conf['IRC_CLEARMSG_TIMEOUT'] = cfg.get('irc', {}).get('clearmsg_timeout', 60)
CONF['IRC_CHANNEL'] = cfg.get('irc', {}).get('channel', False)
CONF['IRC_USERNAME'] = cfg.get('irc', {}).get('username', False)
CONF['IRC_OAUTH_TOKEN'] = cfg.get('irc', {}).get('oauth_token', False)
CONF['IRC_SERVER'] = cfg.get('irc', {}).get('server', "irc.chat.twitch.tv")
CONF['IRC_CLEARMSG_TIMEOUT'] = cfg.get('irc', {}).get('clearmsg_timeout', 60)
conf['IRC_SUBONLY'] = cfg.get('bot', {}).get('subonly', False)
conf['IRC_MODONLY'] = cfg.get('bot', {}).get('modonly', False)
conf['IRC_TTS_LEN'] = cfg.get('bot', {}).get('message_length', 200)
conf['TTS_STARTENABLED'] = cfg.get('bot', {}).get('start_enabled', True)
conf['WIKI_LANG'] = cfg.get('bot', {}).get('language', 'en')
CONF['IRC_SUBONLY'] = cfg.get('bot', {}).get('subonly', False)
CONF['IRC_MODONLY'] = cfg.get('bot', {}).get('modonly', False)
CONF['IRC_TTS_LEN'] = cfg.get('bot', {}).get('message_length', 200)
CONF['TTS_STARTENABLED'] = cfg.get('bot', {}).get('start_enabled', True)
CONF['WIKI_LANG'] = cfg.get('bot', {}).get('language', 'en')
conf['LOG_LEVEL'] = cfg.get('log', {}).get('level', "INFO")
conf['HTTP_PORT'] = cfg.get('http', {}).get('port', 80)
conf['HTTP_BIND'] = cfg.get('http', {}).get('bind', "localhost")
CONF['LOG_LEVEL'] = cfg.get('log', {}).get('level', "INFO")
CONF['HTTP_PORT'] = cfg.get('http', {}).get('port', 80)
CONF['HTTP_BIND'] = cfg.get('http', {}).get('bind', "localhost")
conf['MESSAGE'] = {}
conf['MESSAGE']['TOFF'] = cfg.get('messages', {}).get('toff', "TTS is now disabled.")
conf['MESSAGE']['TON'] = cfg.get('messages', {}).get('ton', "TTS is now active.")
conf['MESSAGE']['TOO_LONG'] = cfg.get('messages', {}).get('too_long', "Sorry, your message is too long.")
conf['MESSAGE']['DISABLED'] = cfg.get('messages', {}).get('disabled', "Sorry, TTS is disabled.")
conf['MESSAGE']['DENIED'] = cfg.get('messages', {}).get('denied', "Sorry, you're not allowed to use TTS.")
conf['MESSAGE']['SUBONLY'] = cfg.get('messages', {}).get('subonly', "Sorry, TTS is sub-only.")
conf['MESSAGE']['MODONLY'] = cfg.get('messages', {}).get('modonly', "Sorry, TTS is mod-only.")
conf['MESSAGE']['READY'] = cfg.get('messages', {}).get('ready', "TTS bot is ready.")
conf['MESSAGE']['WHITELISTONLY'] = cfg.get('messages', {}).get('whitelist', False)
conf['MESSAGE']['SAYS'] = cfg.get('messages', {}).get('says', "says")
CONF['MESSAGE'] = {}
CONF['MESSAGE']['TOFF'] = cfg.get('messages', {}).get('toff', "TTS is now disabled.")
CONF['MESSAGE']['TON'] = cfg.get('messages', {}).get('ton', "TTS is now active.")
CONF['MESSAGE']['TOO_LONG'] = cfg.get('messages', {}).get('too_long', "Sorry, your message is too long.")
CONF['MESSAGE']['DISABLED'] = cfg.get('messages', {}).get('disabled', "Sorry, TTS is disabled.")
CONF['MESSAGE']['DENIED'] = cfg.get('messages', {}).get('denied', "Sorry, you're not allowed to use TTS.")
CONF['MESSAGE']['SUBONLY'] = cfg.get('messages', {}).get('subonly', "Sorry, TTS is sub-only.")
CONF['MESSAGE']['MODONLY'] = cfg.get('messages', {}).get('modonly', "Sorry, TTS is mod-only.")
CONF['MESSAGE']['READY'] = cfg.get('messages', {}).get('ready', "TTS bot is ready.")
CONF['MESSAGE']['WHITELISTONLY'] = cfg.get('messages', {}).get('whitelist', False)
CONF['MESSAGE']['SAYS'] = cfg.get('messages', {}).get('says', "says")
conf['MESSAGE']['VOTESTART'] = cfg.get('messages', {}).get('votestart', "Quickvote started. Send #yourchoice to participate.")
conf['MESSAGE']['VOTEEND'] = cfg.get('messages', {}).get('voteend', "Quickvote ended. The results are:")
conf['MESSAGE']['VOTENOBODY'] = cfg.get('messages', {}).get('votenobody', "Nobody casted a vote. :(")
conf['MESSAGE']['VOTERESULT'] = cfg.get('messages', {}).get('voteresult', "Voting has ended. The result is:")
conf['MESSAGE']['VOTES'] = cfg.get('messages', {}).get('votes', "Votes")
CONF['MESSAGE']['VOTESTART'] = cfg.get('messages', {}).get('votestart', "Quickvote started. Send #yourchoice to participate.")
CONF['MESSAGE']['VOTEEND'] = cfg.get('messages', {}).get('voteend', "Quickvote ended. The results are:")
CONF['MESSAGE']['VOTENOBODY'] = cfg.get('messages', {}).get('votenobody', "Nobody casted a vote. :(")
CONF['MESSAGE']['VOTERESULT'] = cfg.get('messages', {}).get('voteresult', "Voting has ended. The result is:")
CONF['MESSAGE']['VOTES'] = cfg.get('messages', {}).get('votes', "Votes")
conf['MESSAGE']['PICKSTART'] = cfg.get('messages', {}).get('pickstart', "Pick started. Send #pickme to participate.")
conf['MESSAGE']['PICKRESULT'] = cfg.get('messages', {}).get('pickresult', "Pick ended. The results are:")
conf['MESSAGE']['PICKNONE'] = cfg.get('messages', {}).get('picknone', "Pick ended. Nobody was picked.")
CONF['MESSAGE']['PICKSTART'] = cfg.get('messages', {}).get('pickstart', "Pick started. Send #pickme to participate.")
CONF['MESSAGE']['PICKRESULT'] = cfg.get('messages', {}).get('pickresult', "Pick ended. The results are:")
CONF['MESSAGE']['PICKNONE'] = cfg.get('messages', {}).get('picknone', "Pick ended. Nobody was picked.")
conf['MESSAGE']['QUOTE_NOT_FOUND'] = cfg.get('messages', {}).get('quotenotfound', "Sorry, no quote found.")
conf['MESSAGE']['QUOTE_ADDED_PREFIX'] = cfg.get('messages', {}).get('quoteaddedprefix', "Quote:")
conf['MESSAGE']['QUOTE_ADDED_SUFFIX'] = cfg.get('messages', {}).get('quoteaddedsuffix', "added.")
CONF['MESSAGE']['QUOTE_NOT_FOUND'] = cfg.get('messages', {}).get('quotenotfound', "Sorry, no quote found.")
CONF['MESSAGE']['QUOTE_ADDED_PREFIX'] = cfg.get('messages', {}).get('quoteaddedprefix', "Quote:")
CONF['MESSAGE']['QUOTE_ADDED_SUFFIX'] = cfg.get('messages', {}).get('quoteaddedsuffix', "added.")
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['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['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', [])
CONF['USERMAP'] = cfg.get('usermapping', [])
if 'whitelist' in cfg:
conf['WHITELIST'] = True
conf['WHITELIST_USER'] = cfg['whitelist']
CONF['WHITELIST'] = True
CONF['WHITELIST_USER'] = cfg['whitelist']
else:
conf['WHITELIST'] = False
CONF['WHITELIST'] = False
except KeyError:
logging.exception('Your config file is invalid, please check and try again.')
sys.exit(254)
if conf['WHITELIST']:
if CONF['WHITELIST']:
logging.info('Whitelist mode enabled')
logging.debug('Whitelist: %s', conf['WHITELIST_USER'])
logging.debug('Whitelist: %s', CONF['WHITELIST_USER'])
if not conf['IRC_CHANNEL']:
if not CONF['IRC_CHANNEL']:
raise ValueError('Please add your twitch channel to config.yml.')
if not conf['IRC_USERNAME']:
if not CONF['IRC_USERNAME']:
raise ValueError('Please add the bots username to config.yml.')
if not conf['IRC_OAUTH_TOKEN']:
conf['IRC_OAUTH_TOKEN'] = "Invalid"
return conf
if not conf['IRC_OAUTH_TOKEN'].startswith('oauth:'):
if not CONF['IRC_OAUTH_TOKEN']:
CONF['IRC_OAUTH_TOKEN'] = "Invalid"
return CONF
if not CONF['IRC_OAUTH_TOKEN'].startswith('oauth:'):
raise ValueError('Your oauth-token is invalid, it has to start with: "oauth:"')
return conf
return CONF
def send_tts_queue():
""" Send messages to TTS """
@ -1204,7 +1204,7 @@ def send_tts_queue():
logging.debug('Raw msg: %s', msg_queue_raw)
now = datetime.datetime.now()
if now - raw_msg['queuetime'] > datetime.timedelta(seconds=conf['IRC_CLEARMSG_TIMEOUT']):
if now - raw_msg['queuetime'] > datetime.timedelta(seconds=CONF['IRC_CLEARMSG_TIMEOUT']):
logging.debug('clearmsg_timeout reached')
if raw_msg['timestamp'] not in msg_queue:
logging.info('Sending TTS message')
@ -1215,12 +1215,12 @@ def send_tts_queue():
def get_url(path=False):
""" Generate a valid URL from config values """
if conf['HTTP_BIND'] == "0.0.0.0":
if CONF['HTTP_BIND'] == "0.0.0.0":
url = "localhost"
else:
url = conf['HTTP_BIND']
url = CONF['HTTP_BIND']
url = "http://"+str(url)+":"+str(conf['HTTP_PORT'])+"/"
url = "http://"+str(url)+":"+str(CONF['HTTP_PORT'])+"/"
if path:
url = url+str(path)
@ -1229,42 +1229,42 @@ def get_url(path=False):
def check_oauth_token():
""" Check for valid authentication via Twitch API """
global conf # pylint: disable=global-statement,invalid-name
global CONF # pylint: disable=global-statement
logging.debug('Checking OAuth Token')
try:
url = 'https://id.twitch.tv/oauth2/validate'
oauth = "OAuth "+str(conf['IRC_OAUTH_TOKEN'].replace('oauth:',''))
oauth = "OAuth "+str(CONF['IRC_OAUTH_TOKEN'].replace('oauth:',''))
request = urllib.request.Request(url)
request.add_header('Authorization', oauth)
urllib.request.urlopen(request)
except HTTPError:
logging.fatal('Twitch rejected your OAuth Token. Please check and generate a new one.')
logging.info('Please open http://%s:%s/token to generate your OAuth-Token.', conf['HTTP_BIND'], conf['HTTP_PORT'])
logging.info('Please open http://%s:%s/token to generate your OAuth-Token.', CONF['HTTP_BIND'], CONF['HTTP_PORT'])
url = get_url("token")
webbrowser.open_new_tab(url)
logging.info('Please complete the OAuth process and add the token into your "config.yml" within the next 5 minutes.')
time.sleep(300)
conf = load_config()
CONF = load_config()
check_oauth_token()
logging.info('OAuth Token is valid')
return conf
return CONF
def main():
"""Main loop"""
global conf # pylint: disable=global-statement,invalid-name
conf = load_config()
global CONF # pylint: disable=global-statement
CONF = load_config()
lastreload = datetime.datetime.now()
logging.getLogger().setLevel(conf['LOG_LEVEL'])
if conf['LOG_LEVEL'] == 'DEBUG':
logging.getLogger().setLevel(CONF['LOG_LEVEL'])
if CONF['LOG_LEVEL'] == 'DEBUG':
sys.tracebacklimit = 5
logging.info("Starting Webserver")
httpd = ThreadingSimpleServer((conf['HTTP_BIND'], conf['HTTP_PORT']), HTTPserv)
httpd = ThreadingSimpleServer((CONF['HTTP_BIND'], CONF['HTTP_PORT']), HTTPserv)
http_thread = Thread(target=http_serve_forever, daemon=True, args=(httpd, ))
http_thread.start()
@ -1273,8 +1273,8 @@ def main():
logging.info("Starting IRC bot")
irc = IRC()
irc.connect(conf['IRC_SERVER'], 6667, conf['IRC_CHANNEL'], conf['IRC_USERNAME'], conf['IRC_OAUTH_TOKEN'])
irc.sendmsg(conf['IRC_CHANNEL'], 'MrDestructoid', conf['MESSAGE']['READY'])
irc.connect(CONF['IRC_SERVER'], 6667, CONF['IRC_CHANNEL'], CONF['IRC_USERNAME'], CONF['IRC_OAUTH_TOKEN'])
irc.sendmsg(CONF['IRC_CHANNEL'], 'MrDestructoid', CONF['MESSAGE']['READY'])
logging.info('Connected and joined')
url = get_url()
@ -1282,7 +1282,7 @@ def main():
webbrowser.open_new_tab(url)
while True:
if conf['LOG_LEVEL'] == "DEBUG":
if CONF['LOG_LEVEL'] == "DEBUG":
time.sleep(1)
try:
@ -1290,12 +1290,12 @@ def main():
confreload = datetime.datetime.now()
if confreload - lastreload > datetime.timedelta(seconds=60):
conf = load_config()
CONF = load_config()
lastreload = datetime.datetime.now()
if irc.quickvote_status and irc.votemsg:
logging.info('Quickvote is active')
irc.sendmsg(conf['IRC_CHANNEL'], "@chat", conf['MESSAGE']['VOTESTART'] + " (" + str(irc.votemsg) + ")")
irc.sendmsg(CONF['IRC_CHANNEL'], "@chat", CONF['MESSAGE']['VOTESTART'] + " (" + str(irc.votemsg) + ")")
if not irc.tts_status:
continue
@ -1312,8 +1312,8 @@ if __name__ == "__main__":
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(module)s %(threadName)s %(levelname)s: %(message)s')
sys.tracebacklimit = 3
VERSION = "1.7.0"
conf = {}
VERSION = "1.7.1"
CONF = {}
tts_done = []
msg_queue_raw = []
msg_queue = {}