3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-12-24 19:52:53 +01:00

plugins/admin & relay: Add help for commands

This commit is contained in:
James Lu 2015-07-17 22:35:34 -07:00
parent 50665ec601
commit 4553eda6ec
3 changed files with 41 additions and 24 deletions

View File

@ -42,3 +42,5 @@ servers:
# Plugins to load (omit the .py extension) # Plugins to load (omit the .py extension)
plugins: plugins:
- commands - commands
# - admin
# - relay

View File

@ -11,6 +11,10 @@ def checkauthenticated(irc, source):
raise NotAuthenticatedError("You are not authenticated!") raise NotAuthenticatedError("You are not authenticated!")
def _exec(irc, source, args): def _exec(irc, source, args):
"""<code>
Admin-only. Executes <code> in the current PyLink instance.
\x02**WARNING: THIS CAN BE DANGEROUS IF USED IMPROPERLY!**\x02"""
checkauthenticated(irc, source) checkauthenticated(irc, source)
args = ' '.join(args) args = ' '.join(args)
if not args.strip(): if not args.strip():
@ -21,6 +25,10 @@ utils.add_cmd(_exec, 'exec')
@utils.add_cmd @utils.add_cmd
def spawnclient(irc, source, args): def spawnclient(irc, source, args):
"""<nick> <ident> <host>
Admin-only. Spawns the specified PseudoClient on the PyLink server.
Note: this doesn't check the validity of any fields you give it!"""
checkauthenticated(irc, source) checkauthenticated(irc, source)
try: try:
nick, ident, host = args[:3] nick, ident, host = args[:3]
@ -31,6 +39,9 @@ def spawnclient(irc, source, args):
@utils.add_cmd @utils.add_cmd
def quit(irc, source, args): def quit(irc, source, args):
"""<target> [<reason>]
Admin-only. Quits the PyLink client <target>, if it exists."""
checkauthenticated(irc, source) checkauthenticated(irc, source)
try: try:
nick = args[0] nick = args[0]
@ -45,6 +56,9 @@ def quit(irc, source, args):
irc.proto.quitClient(irc, u, quitmsg) irc.proto.quitClient(irc, u, quitmsg)
def joinclient(irc, source, args): def joinclient(irc, source, args):
"""<target> <channel1>,[<channel2>], etc.
Admin-only. Joins <target>, a PyLink client, to a comma-separated list of channels."""
checkauthenticated(irc, source) checkauthenticated(irc, source)
try: try:
nick = args[0] nick = args[0]
@ -64,6 +78,9 @@ utils.add_cmd(joinclient, name='join')
@utils.add_cmd @utils.add_cmd
def nick(irc, source, args): def nick(irc, source, args):
"""<target> <newnick>
Admin-only. Changes the nick of <target>, a PyLink client, to <newnick>."""
checkauthenticated(irc, source) checkauthenticated(irc, source)
try: try:
nick = args[0] nick = args[0]
@ -81,6 +98,9 @@ def nick(irc, source, args):
@utils.add_cmd @utils.add_cmd
def part(irc, source, args): def part(irc, source, args):
"""<target> <channel1>,[<channel2>],... [<reason>]
Admin-only. Parts <target>, a PyLink client, from a comma-separated list of channels."""
checkauthenticated(irc, source) checkauthenticated(irc, source)
try: try:
nick = args[0] nick = args[0]
@ -98,6 +118,9 @@ def part(irc, source, args):
@utils.add_cmd @utils.add_cmd
def kick(irc, source, args): def kick(irc, source, args):
"""<source> <channel> <user> [<reason>]
Admin-only. Kicks <user> from <channel> via <source>, where <source> is a PyLink client."""
checkauthenticated(irc, source) checkauthenticated(irc, source)
try: try:
nick = args[0] nick = args[0]
@ -116,6 +139,9 @@ def kick(irc, source, args):
@utils.add_cmd @utils.add_cmd
def showuser(irc, source, args): def showuser(irc, source, args):
"""<user>
Admin-only. Shows information about <user>."""
checkauthenticated(irc, source) checkauthenticated(irc, source)
try: try:
target = args[0] target = args[0]
@ -132,6 +158,9 @@ def showuser(irc, source, args):
@utils.add_cmd @utils.add_cmd
def showchan(irc, source, args): def showchan(irc, source, args):
"""<channel>
Admin-only. Shows information about <channel>."""
checkauthenticated(irc, source) checkauthenticated(irc, source)
try: try:
channel = args[0].lower() channel = args[0].lower()
@ -145,25 +174,11 @@ def showchan(irc, source, args):
s = 'Information on channel \x02%s\x02: %s' % (channel, '; '.join(s)) s = 'Information on channel \x02%s\x02: %s' % (channel, '; '.join(s))
utils.msg(irc, source, s) utils.msg(irc, source, s)
@utils.add_cmd
def tell(irc, source, args):
checkauthenticated(irc, source)
try:
target, text = args[0], ' '.join(args[1:])
except IndexError:
utils.msg(irc, source, 'Error: not enough arguments. Needs 2: target, text.')
return
targetuid = utils.nickToUid(irc, target)
if targetuid is None:
utils.msg(irc, source, 'Error: unknown user %r' % target)
return
if not text:
utils.msg(irc, source, "Error: can't send an empty message!")
return
utils.msg(irc, target, text, notice=True)
@utils.add_cmd @utils.add_cmd
def mode(irc, source, args): def mode(irc, source, args):
"""<source> <target> <modes>
Admin-only. Sets modes <modes> on <target>."""
checkauthenticated(irc, source) checkauthenticated(irc, source)
try: try:
modesource, target, modes = args[0], args[1], args[2:] modesource, target, modes = args[0], args[1], args[2:]

View File

@ -559,7 +559,7 @@ def create(irc, source, args):
def destroy(irc, source, args): def destroy(irc, source, args):
"""<channel> """<channel>
Destroys the channel <channel> over the relay.""" Removes <channel> from the relay, delinking all networks linked to it."""
try: try:
channel = args[0].lower() channel = args[0].lower()
except IndexError: except IndexError:
@ -588,8 +588,7 @@ def link(irc, source, args):
"""<remotenet> <channel> <local channel> """<remotenet> <channel> <local channel>
Links channel <channel> on <remotenet> over the relay to <local channel>. Links channel <channel> on <remotenet> over the relay to <local channel>.
If <local channel> is not specified, it defaults to the same name as If <local channel> is not specified, it defaults to the same name as <channel>."""
<channel>."""
try: try:
channel = args[1].lower() channel = args[1].lower()
remotenet = args[0].lower() remotenet = args[0].lower()
@ -637,10 +636,8 @@ def link(irc, source, args):
def delink(irc, source, args): def delink(irc, source, args):
"""<local channel> [<network>] """<local channel> [<network>]
Delinks channel <local channel>. <network> must and can only be specified Delinks channel <local channel>. <network> must and can only be specified if you are on the host network for <local channel>, and allows you to pick which network to delink.
if you are on the host network for <local channel>, and allows you to To remove a relay entirely, use the 'destroy' command instead."""
pick which network to delink. To remove all networks from a relay, use the
'destroy' command instead."""
try: try:
channel = args[0].lower() channel = args[0].lower()
except IndexError: except IndexError:
@ -709,6 +706,9 @@ utils.add_hook(handle_disconnect, "PYLINK_DISCONNECT")
@utils.add_cmd @utils.add_cmd
def linked(irc, source, args): def linked(irc, source, args):
"""takes no arguments.
Returns a list of channels shared across the relay."""
networks = list(utils.networkobjects.keys()) networks = list(utils.networkobjects.keys())
networks.remove(irc.name) networks.remove(irc.name)
s = 'Connected networks: \x02%s\x02 %s' % (irc.name, ' '.join(networks)) s = 'Connected networks: \x02%s\x02 %s' % (irc.name, ' '.join(networks))