From e69ce5090af5b01250078d700ad0652f41ed8711 Mon Sep 17 00:00:00 2001 From: Mark Veidemanis Date: Tue, 9 Aug 2022 07:20:30 +0100 Subject: [PATCH] Properly implement querying with API --- api/views.py | 9 ++++++++- core/bot.py | 12 ++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/api/views.py b/api/views.py index e9b2ef6..9d2348d 100644 --- a/api/views.py +++ b/api/views.py @@ -499,5 +499,12 @@ class API(object): name = f"{net}{num}" if name not in main.IRCPool.keys(): return dumps({"success": False, "reason": f"relay {num} not on {net}"}) - main.IRCPool[name].sendmsg(channel, msg) + # We are in a query + if channel == main.IRCPool[name].nickname: + if "nick" not in data: + return dumps({"success": False, "reason": "no nick specified to query"}) + else: + main.IRCPool[name].sendmsg(data["nick"], msg, in_query=True) + else: + main.IRCPool[name].sendmsg(channel, msg) return dumps({"success": True, "message": f"sent message to {channel} on {name}"}) diff --git a/core/bot.py b/core/bot.py index 47348e4..8014f4b 100644 --- a/core/bot.py +++ b/core/bot.py @@ -16,7 +16,7 @@ from twisted.words.protocols.irc import ( import main from core.relay import sendRelayNotification -from modules import chankeep, counters, helpers, monitor, regproc, userinfo, userinfo +from modules import chankeep, counters, helpers, monitor, regproc, userinfo from utils.dedup import dedup from utils.logging.debug import debug from utils.logging.log import error, log, warn @@ -252,7 +252,7 @@ class IRCBot(IRCClient): def action(self, user, channel, msg): self.event(type="action", muser=user, channel=channel, msg=msg) - def sendmsg(self, channel, msg): + def sendmsg(self, channel, msg, in_query=False): query = f"{self.nickname}!*@*" us = list(userinfo.getWhoSingle(self.net, query)) if len(us) > 0: @@ -262,8 +262,12 @@ class IRCBot(IRCClient): hostmask = f"{self.nickname}!*@{self.servername}" warn(f"Could not get a hostname, using {hostmask}") nick, ident, host = parsen(hostmask) - self.event(type="self", mtype="msg", channel=channel, nick=self.nickname, ident=ident, host=host, msg=msg) - self.event(type="msg", channel=channel, nick=self.nickname, ident=ident, host=host, msg=msg) + # We sent someone a query reply + if in_query: + self.event(type="self", mtype="msg", channel=self.nickname, nick=channel, ident=ident, host=host, msg=msg) + else: + self.event(type="self", mtype="msg", channel=channel, nick=self.nickname, ident=ident, host=host, msg=msg) + self.event(type="msg", channel=channel, nick=self.nickname, ident=ident, host=host, msg=msg) self.msg(channel, msg) def get(self, var):