3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-12-17 23:52:49 +01:00
PyLink/plugins/global.py

37 lines
1.3 KiB
Python
Raw Normal View History

2017-03-13 17:30:06 +01:00
# global.py: Global Noticing Plugin
2017-03-13 21:38:53 +01:00
import string
2017-03-13 17:30:06 +01:00
from pylinkirc import conf, utils, world
from pylinkirc.log import log
from pylinkirc.coremods import permissions
2017-03-13 21:38:53 +01:00
DEFAULT_FORMAT = "[$sender@$fullnetwork] $text"
2017-03-13 17:30:06 +01:00
def g(irc, source, args):
"""<message text>
2017-03-13 17:30:06 +01:00
Sends out a Instance-wide notice.
"""
permissions.check_permissions(irc, source, ["global.global"])
2017-03-13 17:30:06 +01:00
message = " ".join(args)
global_conf = conf.conf.get('global') or {}
template = string.Template(global_conf.get('format', DEFAULT_FORMAT))
2017-03-13 21:38:53 +01:00
2017-03-13 17:30:06 +01:00
for name, ircd in world.networkobjects.items():
if ircd.connected.is_set(): # Only attempt to send to connected networks
for channel in ircd.pseudoclient.channels:
subst = {'sender': irc.get_friendly_name(source),
2017-03-13 21:38:53 +01:00
'network': irc.name,
'fullnetwork': irc.get_full_network_name(),
2017-03-13 21:38:53 +01:00
'current_channel': channel,
'current_network': ircd.name,
'current_fullnetwork': ircd.get_full_network_name(),
2017-03-13 21:38:53 +01:00
'text': message}
# Disable relaying or other plugins handling the global message.
2017-03-13 21:38:53 +01:00
ircd.msg(channel, template.safe_substitute(subst), loopback=False)
2017-03-13 17:30:06 +01:00
utils.add_cmd(g, "global", featured=True)