-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathbot.py
54 lines (42 loc) · 1.91 KB
/
bot.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
from twisted.words.protocols import irc
from twisted.internet import reactor, protocol
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from orders import *
from messagehandler import *
class IAMABot(irc.IRCClient):
def __init__(self):
engine = create_engine('sqlite:///sovereign.db')
Session = sessionmaker(bind=engine)
self.session = Session()
self.sovereign = self.session.query(Sovereign).first()
self.nickname = self.sovereign.nickname.encode()
self.password = self.sovereign.serverpass.encode()
self.lineRate = 1
def signedOn(self):
if (self.sovereign.nickservpwd != None):
self.msg("NickServ", "IDENTIFY " + self.sovereign.nickservpwd.encode())
self.msg("NickServ", "update")
for chan in self.sovereign.ircchannels:
self.join(chan.name.encode(), chan.key.encode())
def privmsg(self, user, channel, msg):
if (msg.find('@') == 0):
try:
message_handler = SovereignMessageHandler(self, user, channel, msg)
respondto = channel if channel.find("#") == 0 else user.split("!")[0]
for response in message_handler.response:
self.msg(respondto, response.encode('ISO-8859-1', 'replace'))
# Commit any changes made by the message handler
self.session.commit()
except Exception as e:
self.msg(channel, "Something went wrong. Error: " + e.message)
class SovereignFactory(protocol.ClientFactory):
def __init__(self):
self.bot = IAMABot()
def buildProtocol(self, addr):
self.bot.factory = self
return self.bot
if __name__ == '__main__':
sf = SovereignFactory()
reactor.connectTCP(sf.bot.sovereign.serverhost, sf.bot.sovereign.serverport, sf)
reactor.run()