54
54
self.countdown = self.max_countdown
55
55
self.startTimer('dbsync', 30)
56
56
self.startTimer('pastebinPing', 60*60*3)
58
self._op_deferreds = {}
58
60
def signedOn(self):
59
61
nickserv_pw = conf.get('irc', 'nickserv_pw')
63
65
self.join(conf.get('irc', 'channels'))
64
66
self.startTimer('serverPing', 60)
68
def protocolReady(self):
69
self._op_deferreds = dict.fromkeys(self.is_opped, defer.succeed(None))
71
def ensureOps(self, channel):
72
if self._op_deferreds.get(channel) is None:
73
self._op_deferreds[channel] = defer.Deferred()
74
self.msg('ChanServ', 'op %s' % channel)
75
return self._op_deferreds[channel]
66
77
def ampircTimer_serverPing(self):
67
78
if self.outstandingPings > 5:
68
79
self.transport.loseConnection()
182
193
result = user + ', ' + result
183
194
self.msg(target, result)
196
# Thanks for nothing, twisted. modeChanged sucks so hard.
197
def irc_MODE(self, prefix, params):
198
user, channel, modes, args = prefix, params[0], params[1], params[2:]
207
if self._modeAcceptsArg.get(c, (False, False))[not setting]:
209
self.modeChanged(user, channel, setting, c, arg)
211
log.msg('Too many args (%s) received for %s. If one or more '
212
'modes are supposed to accept an arg and they are not in '
213
'_modeAcceptsArg, add them.' % (' '.join(args), modes))
215
def modeChanged(self, user, channel, set, mode, arg):
216
if mode == 'o' and arg == self.nickname:
217
was_opped = channel in self.is_opped
219
if is_opped and not was_opped:
220
self.is_opped.add(channel)
221
self._op_deferreds.setdefault(channel, defer.Deferred()
223
self.startTimer('deopSelf', 60*5, alsoRunImmediately=False)
224
elif not is_opped and was_opped:
225
self.is_opped.remove(channel)
226
self._op_deferreds.pop(channel, None)
227
self.stopTimer('deopSelf')
228
# XXX: Ugly hack since is_opped is mutable.
229
self.is_opped = self.is_opped
231
def ampircTimer_deopSelf(self):
232
for channel in self.is_opped:
233
self.mode(channel, False, 'o', user=self.nickname)
185
235
@defer.inlineCallbacks
186
236
def do_lol(self, nick):
187
237
offenses = yield self.dbpool.add_lol(nick)