mirror of
https://github.com/Mikaela/Limnoria.git
synced 2025-02-19 23:20:57 +01:00
Added tell to Infobot.
This commit is contained in:
parent
98b7917ffc
commit
750d6c5e5b
@ -159,6 +159,9 @@ class InfobotDB(object):
|
|||||||
def getResponseCount(self):
|
def getResponseCount(self):
|
||||||
return self._responses
|
return self._responses
|
||||||
|
|
||||||
|
class Dunno(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
class Infobot(callbacks.PrivmsgCommandAndRegexp):
|
class Infobot(callbacks.PrivmsgCommandAndRegexp):
|
||||||
regexps = ['doForget', 'doFactoid', 'doUnknown']
|
regexps = ['doForget', 'doFactoid', 'doUnknown']
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -188,8 +191,8 @@ class Infobot(callbacks.PrivmsgCommandAndRegexp):
|
|||||||
assert self.msg is not None
|
assert self.msg is not None
|
||||||
msg = self.msg
|
msg = self.msg
|
||||||
self.replied = True
|
self.replied = True
|
||||||
irc.reply(plugins.standardSubstitute(irc, msg, s), prefixName=False,
|
irc.reply(plugins.standardSubstitute(irc, msg, s),
|
||||||
action=action)
|
prefixName=False, action=action, msg=msg)
|
||||||
|
|
||||||
def confirm(self, irc=None, msg=None):
|
def confirm(self, irc=None, msg=None):
|
||||||
if self.registryValue('personality'):
|
if self.registryValue('personality'):
|
||||||
@ -204,7 +207,7 @@ class Infobot(callbacks.PrivmsgCommandAndRegexp):
|
|||||||
else:
|
else:
|
||||||
self.reply(self.registryValue('boringDunno'), irc=irc, msg=msg)
|
self.reply(self.registryValue('boringDunno'), irc=irc, msg=msg)
|
||||||
|
|
||||||
def factoid(self, key, irc=None, msg=None):
|
def factoid(self, key, irc=None, msg=None, dunno=True):
|
||||||
if irc is None:
|
if irc is None:
|
||||||
assert self.irc is not None
|
assert self.irc is not None
|
||||||
irc = self.irc
|
irc = self.irc
|
||||||
@ -220,17 +223,21 @@ class Infobot(callbacks.PrivmsgCommandAndRegexp):
|
|||||||
value = self.db.getAre(key)
|
value = self.db.getAre(key)
|
||||||
if isAre is None:
|
if isAre is None:
|
||||||
if self.addressed:
|
if self.addressed:
|
||||||
self.dunno(irc=irc, msg=msg)
|
if dunno:
|
||||||
|
self.dunno(irc=irc, msg=msg)
|
||||||
|
else:
|
||||||
|
raise Dunno
|
||||||
else:
|
else:
|
||||||
# XXX
|
|
||||||
value = random.choice(value.split('|'))
|
value = random.choice(value.split('|'))
|
||||||
if value.startswith('<reply>'):
|
if value.startswith('<reply>'):
|
||||||
self.reply('%s' % value[7:].strip(), irc=irc, msg=msg)
|
self.reply(value[7:].strip(),
|
||||||
|
irc=irc, msg=msg)
|
||||||
elif value.startswith('<action>'):
|
elif value.startswith('<action>'):
|
||||||
self.reply('%s' % value[8:].strip(), irc=irc, msg=msg,
|
self.reply(value[8:].strip(),
|
||||||
action=True)
|
irc=irc, msg=msg, action=True)
|
||||||
else:
|
else:
|
||||||
self.reply('%s %s %s, $who.' % (key,isAre,value), irc=irc, msg=msg)
|
self.reply('%s %s %s, $who.' % (key,isAre,value),
|
||||||
|
irc=irc, msg=msg)
|
||||||
|
|
||||||
def normalize(self, s):
|
def normalize(self, s):
|
||||||
s = ircutils.stripFormatting(s)
|
s = ircutils.stripFormatting(s)
|
||||||
@ -368,6 +375,28 @@ class Infobot(callbacks.PrivmsgCommandAndRegexp):
|
|||||||
(utils.nItems('request', self.db.getChangeCount()),
|
(utils.nItems('request', self.db.getChangeCount()),
|
||||||
utils.nItems('change', self.db.getResponseCount())))
|
utils.nItems('change', self.db.getResponseCount())))
|
||||||
|
|
||||||
|
def tell(self, irc, msg, args):
|
||||||
|
"""<nick> [about] <factoid>
|
||||||
|
|
||||||
|
Tells <nick> about <factoid>.
|
||||||
|
"""
|
||||||
|
if len(args) < 2:
|
||||||
|
raise callbacks.ArgumentError
|
||||||
|
if args[1] == 'about':
|
||||||
|
del args[1]
|
||||||
|
(nick, factoid) = privmsgs.getArgs(args, required=2)
|
||||||
|
try:
|
||||||
|
hostmask = irc.state.nickToHostmask(nick)
|
||||||
|
except KeyError:
|
||||||
|
irc.error('I haven\'t seen %s, I\'ll let you do the telling.')
|
||||||
|
return
|
||||||
|
newmsg = ircmsgs.privmsg(irc.nick, factoid+'?', prefix=hostmask)
|
||||||
|
try:
|
||||||
|
self.factoid(factoid, msg=newmsg)
|
||||||
|
except Dunno:
|
||||||
|
self.dunno()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Class = Infobot
|
Class = Infobot
|
||||||
|
|
||||||
|
@ -569,7 +569,7 @@ class IrcObjectProxy(RichReplyMethods):
|
|||||||
self._callCommand(name, command, cb)
|
self._callCommand(name, command, cb)
|
||||||
|
|
||||||
def reply(self, s, noLengthCheck=False, prefixName=True,
|
def reply(self, s, noLengthCheck=False, prefixName=True,
|
||||||
action=False, private=False, notice=False, to=None):
|
action=False, private=False, notice=False, to=None, msg=None):
|
||||||
"""reply(s) -> replies to msg with s
|
"""reply(s) -> replies to msg with s
|
||||||
|
|
||||||
Keyword arguments:
|
Keyword arguments:
|
||||||
@ -589,7 +589,8 @@ class IrcObjectProxy(RichReplyMethods):
|
|||||||
# False use or.
|
# False use or.
|
||||||
assert not isinstance(s, ircmsgs.IrcMsg), \
|
assert not isinstance(s, ircmsgs.IrcMsg), \
|
||||||
'Old code alert: there is no longer a "msg" argument to reply.'
|
'Old code alert: there is no longer a "msg" argument to reply.'
|
||||||
msg = self.msg
|
if msg is None:
|
||||||
|
msg = self.msg
|
||||||
self.action = action or self.action
|
self.action = action or self.action
|
||||||
self.notice = notice or self.notice
|
self.notice = notice or self.notice
|
||||||
self.private = private or self.private
|
self.private = private or self.private
|
||||||
@ -943,13 +944,17 @@ class IrcObjectProxyRegexp(RichReplyMethods):
|
|||||||
self.irc = irc
|
self.irc = irc
|
||||||
self.msg = msg
|
self.msg = msg
|
||||||
|
|
||||||
def error(self, s, **kwargs):
|
def error(self, s, msg=None, **kwargs):
|
||||||
self.irc.queueMsg(error(self.msg, s, **kwargs))
|
if msg is None:
|
||||||
|
msg = self.msg
|
||||||
|
self.irc.queueMsg(error(msg, s, **kwargs))
|
||||||
|
|
||||||
def reply(self, s, **kwargs):
|
def reply(self, s, msg=None, **kwargs):
|
||||||
|
if msg is None:
|
||||||
|
msg = self.msg
|
||||||
assert not isinstance(s, ircmsgs.IrcMsg), \
|
assert not isinstance(s, ircmsgs.IrcMsg), \
|
||||||
'Old code alert: there is no longer a "msg" argument to reply.'
|
'Old code alert: there is no longer a "msg" argument to reply.'
|
||||||
self.irc.queueMsg(reply(self.msg, s, **kwargs))
|
self.irc.queueMsg(reply(msg, s, **kwargs))
|
||||||
|
|
||||||
def __getattr__(self, attr):
|
def __getattr__(self, attr):
|
||||||
return getattr(self.irc, attr)
|
return getattr(self.irc, attr)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user