Properly implement querying with API

This commit is contained in:
Mark Veidemanis 2022-08-09 07:20:30 +01:00
parent ec943203d0
commit a2b6ebd912
2 changed files with 16 additions and 5 deletions

View File

@ -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}"})

View File

@ -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):