Fix ping handling
Don't start a new timer every time someone calls !latency, and make it work even if automatic pinging is disabled. Also, moved the command to handler.py per @Vgr255's suggestion.
This commit is contained in:
parent
6f7e4398dd
commit
a6e4d2b3c1
@ -10,7 +10,10 @@ import traceback
|
|||||||
import botconfig
|
import botconfig
|
||||||
import src.settings as var
|
import src.settings as var
|
||||||
from src import decorators, wolfgame, channels, hooks, users, errlog as log, stream_handler as alog
|
from src import decorators, wolfgame, channels, hooks, users, errlog as log, stream_handler as alog
|
||||||
|
from src.messages import messages
|
||||||
|
from src.utilities import reply
|
||||||
|
|
||||||
|
cmd = decorators.cmd
|
||||||
hook = decorators.hook
|
hook = decorators.hook
|
||||||
|
|
||||||
def on_privmsg(cli, rawnick, chan, msg, *, notice=False):
|
def on_privmsg(cli, rawnick, chan, msg, *, notice=False):
|
||||||
@ -47,9 +50,17 @@ def unhandled(cli, prefix, cmd, *args):
|
|||||||
fn.caller(cli, prefix, *args)
|
fn.caller(cli, prefix, *args)
|
||||||
|
|
||||||
def ping_server(cli):
|
def ping_server(cli):
|
||||||
if var.SERVER_PING_INTERVAL > 0:
|
|
||||||
cli.send("PING :{0}".format(time.time()))
|
cli.send("PING :{0}".format(time.time()))
|
||||||
threading.Timer(var.SERVER_PING_INTERVAL, ping_server, args=(cli,)).start()
|
|
||||||
|
@cmd("latency", pm=True)
|
||||||
|
def latency(cli, nick, chan, rest):
|
||||||
|
ping_server(cli)
|
||||||
|
|
||||||
|
@hook("pong", hookid=300)
|
||||||
|
def latency_pong(cli, server, target, ts):
|
||||||
|
lat = round(time.time() - float(ts), 3)
|
||||||
|
reply(cli, nick, chan, messages["latency"].format(lat, "" if lat == 1 else "s"))
|
||||||
|
hook.unhook(300)
|
||||||
|
|
||||||
def connect_callback(cli):
|
def connect_callback(cli):
|
||||||
regaincount = 0
|
regaincount = 0
|
||||||
@ -88,7 +99,12 @@ def connect_callback(cli):
|
|||||||
|
|
||||||
users.Bot.change_nick(botconfig.NICK)
|
users.Bot.change_nick(botconfig.NICK)
|
||||||
|
|
||||||
|
if var.SERVER_PING_INTERVAL > 0:
|
||||||
|
def ping_server_timer(cli):
|
||||||
ping_server(cli)
|
ping_server(cli)
|
||||||
|
threading.Timer(var.SERVER_PING_INTERVAL, ping_server_timer, args=(cli,)).start()
|
||||||
|
|
||||||
|
ping_server_timer(cli)
|
||||||
|
|
||||||
def mustregain(cli, server, bot_nick, nick, msg):
|
def mustregain(cli, server, bot_nick, nick, msg):
|
||||||
nonlocal regaincount
|
nonlocal regaincount
|
||||||
|
@ -490,18 +490,6 @@ def pinger(cli, nick, chan, rest):
|
|||||||
cmd_char=botconfig.CMD_CHAR,
|
cmd_char=botconfig.CMD_CHAR,
|
||||||
goat_action=random.choice(messages["goat_actions"])))
|
goat_action=random.choice(messages["goat_actions"])))
|
||||||
|
|
||||||
@cmd("latency", pm=True)
|
|
||||||
def latency(cli, nick, chan, rest):
|
|
||||||
from src import handler
|
|
||||||
|
|
||||||
handler.ping_server(cli)
|
|
||||||
|
|
||||||
@hook("pong", hookid=300)
|
|
||||||
def latency_pong(cli, server, target, ts):
|
|
||||||
lat = round(time.time() - float(ts), 3)
|
|
||||||
reply(cli, nick, chan, messages["latency"].format(lat, "" if lat == 1 else "s"))
|
|
||||||
hook.unhook(300)
|
|
||||||
|
|
||||||
@cmd("simple", raw_nick=True, pm=True)
|
@cmd("simple", raw_nick=True, pm=True)
|
||||||
def mark_simple_notify(cli, nick, chan, rest):
|
def mark_simple_notify(cli, nick, chan, rest):
|
||||||
"""Makes the bot give you simple role instructions, in case you are familiar with the roles."""
|
"""Makes the bot give you simple role instructions, in case you are familiar with the roles."""
|
||||||
|
Loading…
Reference in New Issue
Block a user