support multiple strings as counting as nick highlights
also, treat @nicks as being addressed, since we are doing discord through bitlbee now
This commit is contained in:
parent
2bae93778e
commit
0589939137
|
@ -177,6 +177,10 @@ IRCBOT_XMLRPC_HOST = 'localhost'
|
||||||
IRCBOT_XMLRPC_PORT = 13132
|
IRCBOT_XMLRPC_PORT = 13132
|
||||||
|
|
||||||
|
|
||||||
|
# nick hack for discord through bitlbee
|
||||||
|
ADDITIONAL_NICK_MATCHES = []
|
||||||
|
|
||||||
|
|
||||||
# IRC module stuff
|
# IRC module stuff
|
||||||
|
|
||||||
# karma
|
# karma
|
||||||
|
|
|
@ -163,8 +163,8 @@ class DrReactor(irc.client.Reactor):
|
||||||
event.original_msg = what
|
event.original_msg = what
|
||||||
|
|
||||||
# check if we were addressed or not
|
# check if we were addressed or not
|
||||||
my_nick = connection.get_nickname()
|
all_nicks = '|'.join(settings.ADDITIONAL_NICK_MATCHES + [connection.get_nickname()])
|
||||||
addressed_pattern = r'^{0:s}[:,]\s+(?P<addressed_msg>.*)'.format(my_nick)
|
addressed_pattern = r'^(({nicks})[:,]|@({nicks}))\s+(?P<addressed_msg>.*)'.format(nicks=all_nicks)
|
||||||
match = re.match(addressed_pattern, what, re.IGNORECASE)
|
match = re.match(addressed_pattern, what, re.IGNORECASE)
|
||||||
if match:
|
if match:
|
||||||
event.addressed = True
|
event.addressed = True
|
||||||
|
|
|
@ -2,6 +2,7 @@ import logging
|
||||||
import re
|
import re
|
||||||
|
|
||||||
import irc.client
|
import irc.client
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
from ircbot.lib import Plugin, reply_destination_for_event
|
from ircbot.lib import Plugin, reply_destination_for_event
|
||||||
from ircbot.models import IrcChannel
|
from ircbot.models import IrcChannel
|
||||||
|
@ -64,8 +65,8 @@ class Markov(Plugin):
|
||||||
"""Learn from IRC chatter."""
|
"""Learn from IRC chatter."""
|
||||||
|
|
||||||
what = event.arguments[0]
|
what = event.arguments[0]
|
||||||
my_nick = connection.get_nickname()
|
all_nicks = '|'.join(settings.ADDITIONAL_NICK_MATCHES + [connection.get_nickname()])
|
||||||
trimmed_what = re.sub(r'^{0:s}[:,]\s+'.format(my_nick), '', what)
|
trimmed_what = re.sub(r'^(({nicks})[:,]|@({nicks}))\s+'.format(nicks=all_nicks), '', what)
|
||||||
nick = irc.client.NickMask(event.source).nick
|
nick = irc.client.NickMask(event.source).nick
|
||||||
target = reply_destination_for_event(event)
|
target = reply_destination_for_event(event)
|
||||||
|
|
||||||
|
@ -84,16 +85,16 @@ class Markov(Plugin):
|
||||||
context = markovlib.get_or_create_target_context(target)
|
context = markovlib.get_or_create_target_context(target)
|
||||||
markovlib.learn_line(trimmed_what, context)
|
markovlib.learn_line(trimmed_what, context)
|
||||||
|
|
||||||
log.debug("searching '%s' for '%s'", what, my_nick)
|
log.debug("searching '%s' for '%s'", what, all_nicks)
|
||||||
if re.search(my_nick, what, re.IGNORECASE) is not None:
|
if re.search(all_nicks, what, re.IGNORECASE) is not None:
|
||||||
context = markovlib.get_or_create_target_context(target)
|
context = markovlib.get_or_create_target_context(target)
|
||||||
|
|
||||||
addressed_pattern = r'^{0:s}[:,]\s+(.*)'.format(my_nick)
|
addressed_pattern = r'^(({nicks})[:,]|@({nicks}))\s+(?P<addressed_msg>.*)'.format(nicks=all_nicks)
|
||||||
addressed_re = re.compile(addressed_pattern)
|
match = re.match(addressed_pattern, what, re.IGNORECASE)
|
||||||
if addressed_re.match(what):
|
if match:
|
||||||
# i was addressed directly, so respond, addressing
|
# i was addressed directly, so respond, addressing
|
||||||
# the speaker
|
# the speaker
|
||||||
topics = [x for x in addressed_re.match(what).group(1).split(' ') if len(x) >= 3]
|
topics = [x for x in match.group('addressed_msg').split(' ') if len(x) >= 3]
|
||||||
|
|
||||||
return self.bot.reply(event, "{0:s}: {1:s}"
|
return self.bot.reply(event, "{0:s}: {1:s}"
|
||||||
"".format(nick, " ".join(markovlib.generate_line(context, topics=topics))))
|
"".format(nick, " ".join(markovlib.generate_line(context, topics=topics))))
|
||||||
|
|
Loading…
Reference in New Issue