Make sure socket error don't stop syncbot
This commit is contained in:
parent
8499f1b2c8
commit
ffcb71be30
1 changed files with 18 additions and 4 deletions
|
@ -32,6 +32,9 @@ class SyncBot(Tox):
|
||||||
self.sent = None
|
self.sent = None
|
||||||
self.tox_group_id = None
|
self.tox_group_id = None
|
||||||
|
|
||||||
|
self.irc_init()
|
||||||
|
|
||||||
|
def irc_init(self):
|
||||||
self.irc = socket.socket()
|
self.irc = socket.socket()
|
||||||
self.irc.connect((IRC_HOST, IRC_PORT))
|
self.irc.connect((IRC_HOST, IRC_PORT))
|
||||||
self.irc.send("NICK %s\r\n" % NICK)
|
self.irc.send("NICK %s\r\n" % NICK)
|
||||||
|
@ -95,7 +98,7 @@ class SyncBot(Tox):
|
||||||
|
|
||||||
if content == '^syncbot' or \
|
if content == '^syncbot' or \
|
||||||
content == '^echobot':
|
content == '^echobot':
|
||||||
self.irc.send('PRIVMSG %s :%s\r\n' %
|
self.irc_send('PRIVMSG %s :%s\r\n' %
|
||||||
(CHANNEL, self.get_address()))
|
(CHANNEL, self.get_address()))
|
||||||
elif content[1:].startswith('ACTION '):
|
elif content[1:].startswith('ACTION '):
|
||||||
action = '%s> %s' % (rx.group(1),
|
action = '%s> %s' % (rx.group(1),
|
||||||
|
@ -110,12 +113,23 @@ class SyncBot(Tox):
|
||||||
|
|
||||||
l = line.rstrip().split()
|
l = line.rstrip().split()
|
||||||
if l[0] == "PING":
|
if l[0] == "PING":
|
||||||
self.irc.send("PONG %s\r\n" % l[1])
|
self.irc_send("PONG %s\r\n" % l[1])
|
||||||
|
|
||||||
self.do()
|
self.do()
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
self.save_to_file('data')
|
self.save_to_file('data')
|
||||||
|
|
||||||
|
def irc_send(self, msg):
|
||||||
|
success = False
|
||||||
|
while not success:
|
||||||
|
try:
|
||||||
|
self.irc.send(msg)
|
||||||
|
success = True
|
||||||
|
break
|
||||||
|
except socket.error:
|
||||||
|
self.irc_init()
|
||||||
|
sleep(1)
|
||||||
|
|
||||||
def on_connection_status(self, friendId, status):
|
def on_connection_status(self, friendId, status):
|
||||||
if not self.request and not self.joined \
|
if not self.request and not self.joined \
|
||||||
and friendId == self.bid and status:
|
and friendId == self.bid and status:
|
||||||
|
@ -133,13 +147,13 @@ class SyncBot(Tox):
|
||||||
if message != self.sent:
|
if message != self.sent:
|
||||||
name = self.group_peername(groupnumber, friendgroupnumber)
|
name = self.group_peername(groupnumber, friendgroupnumber)
|
||||||
print('TOX> %s: %s' % (name, message))
|
print('TOX> %s: %s' % (name, message))
|
||||||
self.irc.send('PRIVMSG %s :%s> %s\r\n' % (CHANNEL, name, message))
|
self.irc_send('PRIVMSG %s :%s> %s\r\n' % (CHANNEL, name, message))
|
||||||
|
|
||||||
def on_group_action(self, groupnumber, friendgroupnumber, action):
|
def on_group_action(self, groupnumber, friendgroupnumber, action):
|
||||||
if action != self.sent:
|
if action != self.sent:
|
||||||
name = self.group_peername(groupnumber, friendgroupnumber)
|
name = self.group_peername(groupnumber, friendgroupnumber)
|
||||||
print('TOX> %s: %s' % (name, action))
|
print('TOX> %s: %s' % (name, action))
|
||||||
self.irc.send('PRIVMSG %s :\x01ACTION %s> %s\x01\r\n' %
|
self.irc_send('PRIVMSG %s :\x01ACTION %s> %s\x01\r\n' %
|
||||||
(CHANNEL, name, action))
|
(CHANNEL, name, action))
|
||||||
|
|
||||||
def on_friend_request(self, pk, message):
|
def on_friend_request(self, pk, message):
|
||||||
|
|
Loading…
Reference in a new issue