-
Notifications
You must be signed in to change notification settings - Fork 0
/
MainBot.py
66 lines (53 loc) · 2.22 KB
/
MainBot.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
"""
COPYRIGHT INFORMATION
---------------------
Python Twitch bot (MainBot.py)
Copyright © Parafoxia 2020.
Copyright © Carberra 2020.
Copyright © FuzzybuttGames 2020.
This bot can be freely copied and modified without permission, but not sold as is.
Some code in this file is licensed under the Apache License, Version 2.0.
http://aws.amazon.com/apache2.0/
NOTES
-----
You will obviously need to modify NO_SHARE.py and Line 37 to your own info before running the bot.
Otherwise, the modifications to this code, and all the code in the /lib directory, are copyright © FuzzybuttGames 2020.
"""
from twitchAPI.twitch import Twitch
from irc.bot import SingleServerIRCBot
from requests import get
import NO_SHARE
from lib import db, cmds, react #logs
NAME = NO_SHARE.BOT_NAME #My bots name
OWNER = NO_SHARE.CHNL_NAME #My gaming channel name
twitch = Twitch(NO_SHARE.APP_ID, NO_SHARE.APP_SCRT) #app_id app_secret
class Bot(SingleServerIRCBot):
def __init__(self):
self.HOST = "irc.chat.twitch.tv"
self.PORT = 6667
self.USERNAME = NAME.lower()
self.CLIENT_ID = NO_SHARE.BOT_ID #My bots ID
self.TOKEN = NO_SHARE.BOT_TOKEN #My bots Token
self.CHANNEL = f"#{OWNER}"
user_info = twitch.get_users(logins=['<bot name>'])
user_id = user_info['data'][0]['id']
super().__init__([(self.HOST, self.PORT, f"oauth:{self.TOKEN}")], self.USERNAME, self.USERNAME)
def on_welcome(self, cxn, event):
for req in ("membership", "tags", "commands"):
cxn.cap("REQ", f":twitch.tv/{req}")
cxn.join(self.CHANNEL)
db.build()
self.send_message("Now Online.")
@db.with_commit
def on_pubmsg(self, cxn, event):
tags = {kvpair["key"]: kvpair["value"] for kvpair in event.tags}
user = {"name": tags["display-name"], "id": tags["user-id"]}
message = event.arguments[0]
if user["name"] != NAME:
react.process(bot, user, message)
cmds.process(bot, user, message)
def send_message(self, message):
self.connection.privmsg(self.CHANNEL, message)
if __name__=="__main__":
bot = Bot()
bot.start()