mirror of https://gitlab.com/gpvkt/twitchtts.git
Added !wiki command
This commit is contained in:
parent
3f6bbe47e6
commit
0b0c45985e
13
CHANGELOG.md
13
CHANGELOG.md
|
@ -2,9 +2,18 @@
|
||||||
|
|
||||||
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.
|
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.4.1] - unreleased
|
## [1.5.0] - unreleased
|
||||||
|
|
||||||
### Fixed 1.4.1
|
### Added 1.5.0
|
||||||
|
|
||||||
|
* `!wiki` command
|
||||||
|
* `!version` command
|
||||||
|
|
||||||
|
### Changed 1.5.0
|
||||||
|
|
||||||
|
* Added `!sq` as alias for `!smartquote`
|
||||||
|
|
||||||
|
### Fixed 1.5.0
|
||||||
|
|
||||||
* Darkmode: Options background color
|
* Darkmode: Options background color
|
||||||
|
|
||||||
|
|
12
README.md
12
README.md
|
@ -53,6 +53,7 @@ bot:
|
||||||
subonly: False
|
subonly: False
|
||||||
modonly: False
|
modonly: False
|
||||||
message_length: 200
|
message_length: 200
|
||||||
|
language: de
|
||||||
|
|
||||||
messages:
|
messages:
|
||||||
toff: "TTS is now inactive."
|
toff: "TTS is now inactive."
|
||||||
|
@ -72,6 +73,8 @@ messages:
|
||||||
quotenotfound: "Sorry, no quote found."
|
quotenotfound: "Sorry, no quote found."
|
||||||
quoteaddedprefix: "Quote:"
|
quoteaddedprefix: "Quote:"
|
||||||
quoteaddedsuffix: "added."
|
quoteaddedsuffix: "added."
|
||||||
|
wiki_too_many: "Sorry, there are too many possible results. Try a more narrow search."
|
||||||
|
wiki_no_result: "Sorry, there was an error fetching the wikipedia answer."
|
||||||
|
|
||||||
log:
|
log:
|
||||||
level: "INFO"
|
level: "INFO"
|
||||||
|
@ -108,6 +111,7 @@ Please note that the `oauth_token` is valid for approximately 60 days. If it bec
|
||||||
* `subonly`: If `True` only Subs can use TTS
|
* `subonly`: If `True` only Subs can use TTS
|
||||||
* `modonly`: If `True` only Mods can use TTS
|
* `modonly`: If `True` only Mods can use TTS
|
||||||
* `message_length`: Maximum allowed message length for TTS
|
* `message_length`: Maximum allowed message length for TTS
|
||||||
|
* `language`: Language for `!wiki` command
|
||||||
|
|
||||||
##### messages
|
##### messages
|
||||||
|
|
||||||
|
@ -128,6 +132,8 @@ Please note that the `oauth_token` is valid for approximately 60 days. If it bec
|
||||||
* `quotenotfound`: Message if requests quote wasn't found.
|
* `quotenotfound`: Message if requests quote wasn't found.
|
||||||
* `quoteaddedprefix`: Prefix for `Quote <number> added` message.
|
* `quoteaddedprefix`: Prefix for `Quote <number> added` message.
|
||||||
* `quoteaddedsuffix`: Suffix for `Quote <number> added` message.
|
* `quoteaddedsuffix`: Suffix for `Quote <number> added` message.
|
||||||
|
* `wiki_too_many`: Message if `!wiki` command has more than one result.
|
||||||
|
* `wiki_no_result`: Message if `!wiki` command hasn't a valid result.
|
||||||
|
|
||||||
##### log
|
##### log
|
||||||
|
|
||||||
|
@ -198,9 +204,11 @@ The format of `quotes.txt` looks as follows:
|
||||||
|
|
||||||
#### !addquote
|
#### !addquote
|
||||||
|
|
||||||
The `!addvote` command adds a new line to `quotes.txt`. It expects two parameters: `!addquote username quote` where `username` is the name of the user to be quoted.
|
The `!addquote` command adds a new line to `quotes.txt`. It expects two parameters: `!addquote username quote` where `username` is the name of the user to be quoted.
|
||||||
|
|
||||||
Only Subs, Mods and Broadcaster are allowed to add quotes.
|
#### !wiki
|
||||||
|
|
||||||
|
The `!wiki` command searchs the wikipedia and fetches the first three sentences of the result.
|
||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ bot:
|
||||||
subonly: False # Only Subs can use TTS
|
subonly: False # Only Subs can use TTS
|
||||||
modonly: False # Only Mods can use TTS
|
modonly: False # Only Mods can use TTS
|
||||||
message_length: 200 # Max. TTS message length
|
message_length: 200 # Max. TTS message length
|
||||||
|
language: de # Language for wikipedia
|
||||||
|
|
||||||
messages: # Things the bot can send as chat message
|
messages: # Things the bot can send as chat message
|
||||||
toff: "TTS is now inactive."
|
toff: "TTS is now inactive."
|
||||||
|
@ -34,6 +35,8 @@ messages: # Things the bot can send as chat message
|
||||||
quotenotfound: "Sorry, no quote found."
|
quotenotfound: "Sorry, no quote found."
|
||||||
quoteaddedprefix: "Quote:"
|
quoteaddedprefix: "Quote:"
|
||||||
quoteaddedsuffix: "added."
|
quoteaddedsuffix: "added."
|
||||||
|
wiki_too_many: "Sorry, there are too many possible results. Try a more narrow search."
|
||||||
|
wiki_no_result: "Sorry, there was an error fetching the wikipedia answer."
|
||||||
|
|
||||||
log:
|
log:
|
||||||
level: "INFO" # Loglevel, valid values are: DEBUG, INFO, WARNING, ERROR, CRITICAL (do not use DEBUG in a production environment)
|
level: "INFO" # Loglevel, valid values are: DEBUG, INFO, WARNING, ERROR, CRITICAL (do not use DEBUG in a production environment)
|
||||||
|
|
|
@ -1,2 +1,5 @@
|
||||||
fuzzywuzzy==0.18.0
|
fuzzywuzzy==0.18.0
|
||||||
|
PyInstaller==5.3
|
||||||
PyYAML==6.0
|
PyYAML==6.0
|
||||||
|
requests==2.28.1
|
||||||
|
wikipedia==1.4.0
|
||||||
|
|
54
tts.py
54
tts.py
|
@ -42,6 +42,7 @@ from socketserver import ThreadingMixIn
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
import requests
|
import requests
|
||||||
|
import wikipedia
|
||||||
|
|
||||||
from fuzzywuzzy import process
|
from fuzzywuzzy import process
|
||||||
|
|
||||||
|
@ -170,7 +171,11 @@ class IRC:
|
||||||
logging.debug("!addquote command detected")
|
logging.debug("!addquote command detected")
|
||||||
self.Commands.addquote(self, tags, msg)
|
self.Commands.addquote(self, tags, msg)
|
||||||
|
|
||||||
if msg.startswith('!smartquote'):
|
if msg.startswith('!wiki'):
|
||||||
|
logging.debug("!wiki command detected")
|
||||||
|
self.Commands.wiki(self, tags, msg)
|
||||||
|
|
||||||
|
if msg.startswith('!smartquote') or msg.startswith('!sq'):
|
||||||
logging.debug("!smartquote command detected")
|
logging.debug("!smartquote command detected")
|
||||||
self.Commands.quote(self, tags, msg)
|
self.Commands.quote(self, tags, msg)
|
||||||
|
|
||||||
|
@ -220,6 +225,10 @@ class IRC:
|
||||||
logging.debug("Ping check received.")
|
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'):
|
||||||
|
logging.debug("!version command detected")
|
||||||
|
self.sendmsg(conf['IRC_CHANNEL'], "/w @"+str(user), VERSION)
|
||||||
|
|
||||||
elif msg.startswith('!dtts'):
|
elif msg.startswith('!dtts'):
|
||||||
logging.debug("!dtts command detected")
|
logging.debug("!dtts command detected")
|
||||||
self.Commands.dtts(self, msg)
|
self.Commands.dtts(self, msg)
|
||||||
|
@ -505,9 +514,40 @@ class IRC:
|
||||||
msg_queue[raw_msg['timestamp']] = [raw_msg['user'], raw_msg['msg']]
|
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'])
|
||||||
|
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)
|
||||||
|
|
||||||
|
wikiresult = wikiresult.replace('==', '')
|
||||||
|
|
||||||
|
raw_msg = {
|
||||||
|
"TTS": True,
|
||||||
|
"msg": wikiresult,
|
||||||
|
"badges": True,
|
||||||
|
"subscriber": True,
|
||||||
|
"msgid": True,
|
||||||
|
"user": 'wikipedia',
|
||||||
|
"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'])
|
||||||
|
|
||||||
def quote(self, tags, msg = False):
|
def quote(self, tags, msg = False):
|
||||||
""" !q command
|
""" !smartquote command
|
||||||
|
|
||||||
Gets a line from quotes.txt. If a number if given as msg
|
Gets a line from quotes.txt. If a number if given as msg
|
||||||
it fetch the given line number. If a string is given
|
it fetch the given line number. If a string is given
|
||||||
|
@ -515,10 +555,11 @@ class IRC:
|
||||||
it fetch a random line.
|
it fetch a random line.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
user = tags['user']
|
user = tags['user']
|
||||||
query = msg.replace('!smartquote', '').strip()
|
query = msg.replace('!smartquote', '').strip()
|
||||||
|
query = msg.replace('!sq', '').strip()
|
||||||
|
|
||||||
try:
|
|
||||||
if query.isdigit():
|
if query.isdigit():
|
||||||
logging.info('Fetching quote #%s', query)
|
logging.info('Fetching quote #%s', query)
|
||||||
|
|
||||||
|
@ -989,6 +1030,7 @@ def load_config():
|
||||||
conf['IRC_MODONLY'] = cfg.get('bot', {}).get('modonly', False)
|
conf['IRC_MODONLY'] = cfg.get('bot', {}).get('modonly', False)
|
||||||
conf['IRC_TTS_LEN'] = cfg.get('bot', {}).get('message_length', 200)
|
conf['IRC_TTS_LEN'] = cfg.get('bot', {}).get('message_length', 200)
|
||||||
conf['TTS_STARTENABLED'] = cfg.get('bot', {}).get('start_enabled', True)
|
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['LOG_LEVEL'] = cfg.get('log', {}).get('level', "INFO")
|
||||||
conf['HTTP_PORT'] = cfg.get('http', {}).get('port', 80)
|
conf['HTTP_PORT'] = cfg.get('http', {}).get('port', 80)
|
||||||
|
@ -1016,6 +1058,9 @@ def load_config():
|
||||||
conf['MESSAGE']['QUOTE_ADDED_PREFIX'] = cfg.get('messages', {}).get('quoteaddedprefix', "Quote:")
|
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_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['USERMAP'] = cfg.get('usermapping', [])
|
conf['USERMAP'] = cfg.get('usermapping', [])
|
||||||
|
|
||||||
if 'whitelist' in cfg:
|
if 'whitelist' in cfg:
|
||||||
|
@ -1159,6 +1204,7 @@ if __name__ == "__main__":
|
||||||
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(module)s %(threadName)s %(levelname)s: %(message)s')
|
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(module)s %(threadName)s %(levelname)s: %(message)s')
|
||||||
sys.tracebacklimit = 3
|
sys.tracebacklimit = 3
|
||||||
|
|
||||||
|
VERSION = "1.5.0"
|
||||||
conf = {}
|
conf = {}
|
||||||
tts_done = []
|
tts_done = []
|
||||||
msg_queue_raw = []
|
msg_queue_raw = []
|
||||||
|
@ -1167,7 +1213,7 @@ if __name__ == "__main__":
|
||||||
if sys.argv[1:]:
|
if sys.argv[1:]:
|
||||||
if sys.argv[1] == "--version":
|
if sys.argv[1] == "--version":
|
||||||
print('Simple TTS Bot')
|
print('Simple TTS Bot')
|
||||||
print('Version 1.4.0')
|
print('Version %s', VERSION)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
|
Loading…
Reference in New Issue