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.

68 lines
2.3 KiB

from disco.bot import Plugin
class BasicPlugin(Plugin):
@Plugin.command('reload')
def on_reload(self, event):
self.reload()
event.msg.reply('Reloaded!')
@Plugin.listen('MessageCreate')
def on_message_create(self, msg):
self.log.info('Message created: {}: {}'.format(msg.author, msg.content))
@Plugin.command('echo', '<content:str...>')
def on_test_command(self, event, content):
event.msg.reply(content)
@Plugin.command('spam', '<count:int> <content:str...>')
def on_spam_command(self, event, count, content):
for i in range(count):
event.msg.reply(content)
@Plugin.command('count', group='messages')
def on_stats(self, event):
msg = event.msg.reply('Ok, one moment...')
msg_count = 0
for msgs in event.channel.messages_iter(bulk=True):
msg_count += len(msgs)
msg.edit('{} messages'.format(msg_count))
@Plugin.command('tag', '<name:str> [value:str...]')
def on_tag(self, event, name, value=None):
tags = self.storage.guild.ensure('tags')
if value:
tags[name] = value
event.msg.reply(':ok_hand:')
else:
if name in tags:
return event.msg.reply(tags[name])
else:
return event.msg.reply('Unknown tag: `{}`'.format(name))
@Plugin.command('info', '<query:str...>')
def on_info(self, event, query):
users = list(self.state.users.select({'username': query}, {'id': query}))
if not users:
event.msg.reply("Couldn't find user for your query: `{}`".format(query))
elif len(users) > 1:
event.msg.reply('I found too many userse ({}) for your query: `{}`'.format(len(users), query))
else:
user = users[0]
parts = []
parts.append('ID: {}'.format(user.id))
parts.append('Username: {}'.format(user.username))
parts.append('Discriminator: {}'.format(user.discriminator))
if event.channel.guild:
member = event.channel.guild.get_member(user)
parts.append('Nickname: {}'.format(member.nick))
parts.append('Joined At: {}'.format(member.joined_at))
event.msg.reply('```\n{}\n```'.format(
'\n'.join(parts)
))