Ignore short path on messages mentioning the bot directly.

This commit is contained in:
OK 2023-03-27 18:38:56 +02:00
parent 2ee2b092d6
commit a503ee405c
3 changed files with 6 additions and 5 deletions

View File

@ -20,10 +20,11 @@ class AIMessageBase(object):
class AIMessage(AIMessageBase): class AIMessage(AIMessageBase):
def __init__(self, user: str, message: str, channel: str = "chat") -> None: def __init__(self, user: str, message: str, channel: str = "chat", direct: bool = False) -> None:
self.user = user self.user = user
self.message = message self.message = message
self.channel = channel self.channel = channel
self.direct = direct
class AIResponse(AIMessageBase): class AIResponse(AIMessageBase):
@ -94,7 +95,7 @@ class AIResponder(object):
response['hack']) response['hack'])
def short_path(self, message: AIMessage, limit: int) -> bool: def short_path(self, message: AIMessage, limit: int) -> bool:
if 'short-path' not in self.config: if message.direct or 'short-path' not in self.config:
return False return False
for chan_re, user_re in self.config['short-path']: for chan_re, user_re in self.config['short-path']:
chan_ma = re.match(chan_re, message.channel) chan_ma = re.match(chan_re, message.channel)

View File

@ -77,7 +77,7 @@ class FjerkroaBot(commands.Bot):
channel_name = str(message.channel.name) channel_name = str(message.channel.name)
else: else:
channel_name = str(message.channel.id) channel_name = str(message.channel.id)
msg = AIMessage(message.author.name, message_content, channel_name) msg = AIMessage(message.author.name, message_content, channel_name, self.user in message.mentions)
await self.respond(msg, message.channel) await self.respond(msg, message.channel)
async def respond(self, message: AIMessage, channel: TextChannel) -> None: async def respond(self, message: AIMessage, channel: TextChannel) -> None:

View File

@ -88,11 +88,11 @@ class TestFunctionality(TestBotBase):
with patch.object(openai.ChatCompletion, 'acreate', new=acreate): with patch.object(openai.ChatCompletion, 'acreate', new=acreate):
await self.bot.on_message(message) await self.bot.on_message(message)
self.assertEqual(self.bot.airesponder.history[-1]["content"], self.assertEqual(self.bot.airesponder.history[-1]["content"],
'{"user": "madeup_name", "message": "Hello, how are you?", "channel": "some_channel"}') '{"user": "madeup_name", "message": "Hello, how are you?", "channel": "some_channel", "direct": false}')
message.author.name = 'different_name' message.author.name = 'different_name'
await self.bot.on_message(message) await self.bot.on_message(message)
self.assertEqual(self.bot.airesponder.history[-2]["content"], self.assertEqual(self.bot.airesponder.history[-2]["content"],
'{"user": "different_name", "message": "Hello, how are you?", "channel": "some_channel"}') '{"user": "different_name", "message": "Hello, how are you?", "channel": "some_channel", "direct": false}')
message.channel.send.assert_called_once_with("Hello!", suppress_embeds=True) message.channel.send.assert_called_once_with("Hello!", suppress_embeds=True)
async def test_on_message_event2(self) -> None: async def test_on_message_event2(self) -> None: