You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
3.1 KiB

from disco.bot import Plugin
from disco.util.sanitize import S
class BasicPlugin(Plugin):
@Plugin.command('auditme')
def on_auditme(self, event):
invite = event.channel.create_invite(reason='TEST AUDIT')
invite.delete(reason='TEST AUDIT 2')
# channel = event.guild.create_channel('audit-log-test', 'text', reason='TEST CREATE')
# channel.delete(reason='TEST AUDIT 2')
@Plugin.command('ban', '<user:snowflake> <reason:str...>')
def on_ban(self, event, user, reason):
event.guild.create_ban(user, reason=reason + u'\U0001F4BF')
@Plugin.command('ping')
def on_ping_command(self, event):
# Generally all the functionality you need to interact with is contained
# within the event object passed to command and event handlers.
event.msg.reply('Pong!')
@Plugin.listen('MessageCreate')
def on_message_create(self, event):
# All of Discord's events can be listened too and handled easily
self.log.info(u'{}: {}'.format(event.author, event.content))
@Plugin.command('test')
@Plugin.command('echo', '<content:str...>')
def on_echo_command(self, event, content):
# Commands can take a set of arguments that are validated by Disco itself
# and content sent via messages can be automatically sanitized to avoid
# mentions/etc.
event.msg.reply(content, santize=True)
@Plugin.command('add', '<a:int> <b:int>', group='math')
def on_math_add_command(self, event, a, b):
# Commands can be grouped together for a cleaner user-facing interface.
event.msg.reply('{}'.format(a + b))
@Plugin.command('sub', '<a:int> <b:int>', group='math')
def on_math_sub_command(self, event, a, b):
event.msg.reply('{}'.format(a - b))
@Plugin.command('tag', '<name:str> [value:str...]')
def on_tag(self, event, name, value=None):
# Plugins can easily store data locally using Disco's built in storage
tags = self.storage.guild.ensure('tags')
if value:
tags[name] = value
event.msg.reply(u':ok_hand: created tag `{}`'.format(S(name)))
else:
if name in tags:
return event.msg.reply(tags[name])
else:
return event.msg.reply(u'Unknown tag: `{}`'.format(S(name)))
@Plugin.command('test', parser=True)
@Plugin.parser.add_argument('-a', '--asdf', help='wow')
@Plugin.parser.add_argument('--help', action='store_true')
def on_test(self, event, args):
# Disco supports using an argparse.ArgumentParser for parsing commands as
# well, which helps for large complex commands with many options or flags.
if args.help:
return event.msg.reply(event.parser.format_help())
event.msg.reply(args.asdf)
"""
@Plugin.route('/test')
def on_test_route(self):
# Disco has built-in support for Flask (if installed and enabled) which
# allows plugins to create HTTP routes.
from flask import request
print dict(request.headers)
return 'Hi!'
"""