1
0
Fork 0
mirror of https://github.com/myned/modufur.git synced 2024-12-24 22:27:28 +00:00

Merge branch 'dev'

This commit is contained in:
Myned 2017-11-20 06:18:51 -05:00
commit 36041b2dd8
6 changed files with 70 additions and 70 deletions

View file

@ -11,7 +11,7 @@ from fractions import gcd
import discord as d import discord as d
from discord import errors as err from discord import errors as err
from discord import reaction from discord import reaction
from discord.ext import commands from discord.ext import commands as cmds
from discord.ext.commands import errors as errext from discord.ext.commands import errors as errext
from cogs import tools from cogs import tools
@ -113,7 +113,7 @@ class MsG:
return 'https://emojipedia-us.s3.amazonaws.com/thumbs/320/twitter/103/sparkles_2728.png' return 'https://emojipedia-us.s3.amazonaws.com/thumbs/320/twitter/103/sparkles_2728.png'
return None return None
# @commands.command() # @cmds.command()
# async def auto_post(self, ctx): # async def auto_post(self, ctx):
# try: # try:
# if ctx.channel.id not in u.tasks['auto_post']: # if ctx.channel.id not in u.tasks['auto_post']:
@ -133,7 +133,7 @@ class MsG:
# await ctx.send('**Already auto-posting in {}.** Type `stop` to stop.'.format(ctx.channel.mention), delete_after=7) # await ctx.send('**Already auto-posting in {}.** Type `stop` to stop.'.format(ctx.channel.mention), delete_after=7)
# await ctx.message.add_reaction('\N{CROSS MARK}') # await ctx.message.add_reaction('\N{CROSS MARK}')
@commands.group(aliases=['tag', 't'], brief='e621 - Get info on tags', description='e621 | NSFW\nGroup command for obtaining info on tags', usage='[tags|tag|t]') @cmds.group(aliases=['tag', 't'], brief='e621 - Get info on tags', description='e621 | NSFW\nGroup command for obtaining info on tags', usage='[tags|tag|t]')
async def tags(self, ctx): async def tags(self, ctx):
pass pass
@ -197,7 +197,7 @@ class MsG:
if not c: if not c:
await ctx.message.add_reaction('\N{CROSS MARK}') await ctx.message.add_reaction('\N{CROSS MARK}')
@commands.group(aliases=['g']) @cmds.group(aliases=['g'])
async def get(self, ctx): async def get(self, ctx):
if not ctx.invoked_subcommand: if not ctx.invoked_subcommand:
await ctx.send('**Use a flag to get items.**\n*Type* `{}help get` *for more info.*'.format(ctx.prefix), delete_after=7) await ctx.send('**Use a flag to get items.**\n*Type* `{}help get` *for more info.*'.format(ctx.prefix), delete_after=7)
@ -313,7 +313,7 @@ class MsG:
await e.message.edit(content='**Search aborted**', delete_after=7) await e.message.edit(content='**Search aborted**', delete_after=7)
# Reverse image searches a linked image using the public iqdb # Reverse image searches a linked image using the public iqdb
@commands.command(name='reverse', aliases=['rev', 'ris'], brief='e621 Reverse image search', description='e621 | NSFW\nReverse-search an image with given URL') @cmds.command(name='reverse', aliases=['rev', 'ris'], brief='e621 Reverse image search', description='e621 | NSFW\nReverse-search an image with given URL')
async def reverse(self, ctx, *args): async def reverse(self, ctx, *args):
try: try:
kwargs = u.get_kwargs(ctx, args) kwargs = u.get_kwargs(ctx, args)
@ -357,7 +357,7 @@ class MsG:
await ctx.send(f'`{e}` **too large.** Maximum is 8 MB', delete_after=7) await ctx.send(f'`{e}` **too large.** Maximum is 8 MB', delete_after=7)
await ctx.message.add_reaction('\N{CROSS MARK}') await ctx.message.add_reaction('\N{CROSS MARK}')
@commands.command(name='reversify', aliases=['revify', 'risify', 'rify']) @cmds.command(name='reversify', aliases=['revify', 'risify', 'rify'])
async def reversify(self, ctx, *args): async def reversify(self, ctx, *args):
try: try:
kwargs = u.get_kwargs(ctx, args, limit=self.HISTORY_LIMIT / 5) kwargs = u.get_kwargs(ctx, args, limit=self.HISTORY_LIMIT / 5)
@ -500,8 +500,8 @@ class MsG:
print('STOPPED : reversifying #{}'.format(channel.name)) print('STOPPED : reversifying #{}'.format(channel.name))
await channel.send('**Stopped queueing messages for reversification in** {}'.format(channel.mention), delete_after=5) await channel.send('**Stopped queueing messages for reversification in** {}'.format(channel.mention), delete_after=5)
@commands.command(name='autoreversify', aliases=['autorev']) @cmds.command(name='autoreversify', aliases=['autorev'])
@commands.has_permissions(manage_channels=True) @cmds.has_permissions(manage_channels=True)
async def auto_reversify(self, ctx): async def auto_reversify(self, ctx):
if ctx.channel.id not in u.tasks['auto_rev']: if ctx.channel.id not in u.tasks['auto_rev']:
u.tasks['auto_rev'].append(ctx.channel.id) u.tasks['auto_rev'].append(ctx.channel.id)
@ -641,7 +641,7 @@ class MsG:
raise exc.NotFound(formatter.tostring(tags)) raise exc.NotFound(formatter.tostring(tags))
# Creates reaction-based paginator for linked pools # Creates reaction-based paginator for linked pools
@commands.command(name='poolpage', aliases=['poolp', 'pp', 'e621pp', 'e6pp', '6pp'], brief='e621 pool paginator', description='e621 | NSFW\nShow pools in a page format') @cmds.command(name='poolpage', aliases=['poolp', 'pp', 'e621pp', 'e6pp', '6pp'], brief='e621 pool paginator', description='e621 | NSFW\nShow pools in a page format')
async def pool_paginator(self, ctx, *args): async def pool_paginator(self, ctx, *args):
def on_reaction(reaction, user): def on_reaction(reaction, user):
if reaction.emoji == '\N{OCTAGONAL SIGN}' and reaction.message.id == ctx.message.id and (user is ctx.author or user.permissions_in(reaction.message.channel).manage_messages): if reaction.emoji == '\N{OCTAGONAL SIGN}' and reaction.message.id == ctx.message.id and (user is ctx.author or user.permissions_in(reaction.message.channel).manage_messages):
@ -772,7 +772,7 @@ class MsG:
await ctx.author.send('`{} / {}`'.format(hearted.index(embed) + 1, len(hearted)), embed=embed) await ctx.author.send('`{} / {}`'.format(hearted.index(embed) + 1, len(hearted)), embed=embed)
@commands.command(name='e621page', aliases=['e621p', 'e6p', '6p']) @cmds.command(name='e621page', aliases=['e621p', 'e6p', '6p'])
@checks.is_nsfw() @checks.is_nsfw()
async def e621_paginator(self, ctx, *args): async def e621_paginator(self, ctx, *args):
def on_reaction(reaction, user): def on_reaction(reaction, user):
@ -932,7 +932,7 @@ class MsG:
# await ctx.send('\N{NO ENTRY} {} **is not an NSFW channel**'.format(ctx.channel.mention), delete_after=7) # await ctx.send('\N{NO ENTRY} {} **is not an NSFW channel**'.format(ctx.channel.mention), delete_after=7)
# await ctx.message.add_reaction('\N{NO ENTRY}') # await ctx.message.add_reaction('\N{NO ENTRY}')
@commands.command(name='e926page', aliases=['e926p', 'e9p', '9p']) @cmds.command(name='e926page', aliases=['e926p', 'e9p', '9p'])
async def e926_paginator(self, ctx, *args): async def e926_paginator(self, ctx, *args):
def on_reaction(reaction, user): def on_reaction(reaction, user):
if reaction.emoji == '\N{OCTAGONAL SIGN}' and reaction.message.id == ctx.message.id and (user is ctx.author or user.permissions_in(reaction.message.channel).manage_messages): if reaction.emoji == '\N{OCTAGONAL SIGN}' and reaction.message.id == ctx.message.id and (user is ctx.author or user.permissions_in(reaction.message.channel).manage_messages):
@ -1086,7 +1086,7 @@ class MsG:
await ctx.author.send('`{} / {}`'.format(hearted.index(embed) + 1, len(hearted)), embed=embed) await ctx.author.send('`{} / {}`'.format(hearted.index(embed) + 1, len(hearted)), embed=embed)
# Searches for and returns images from e621.net given tags when not blacklisted # Searches for and returns images from e621.net given tags when not blacklisted
@commands.group(aliases=['e6', '6'], brief='e621 | NSFW', description='e621 | NSFW\nTag-based search for e621.net\n\nYou can only search 5 tags and 6 images at once for now.\ne6 [tags...] ([# of images])') @cmds.group(aliases=['e6', '6'], brief='e621 | NSFW', description='e621 | NSFW\nTag-based search for e621.net\n\nYou can only search 5 tags and 6 images at once for now.\ne6 [tags...] ([# of images])')
@checks.is_nsfw() @checks.is_nsfw()
async def e621(self, ctx, *args): async def e621(self, ctx, *args):
try: try:
@ -1135,7 +1135,7 @@ class MsG:
# await ctx.message.add_reaction('\N{NO ENTRY}') # await ctx.message.add_reaction('\N{NO ENTRY}')
# Searches for and returns images from e926.net given tags when not blacklisted # Searches for and returns images from e926.net given tags when not blacklisted
@commands.command(aliases=['e9', '9'], brief='e926 | SFW', description='e926 | SFW\nTag-based search for e926.net\n\nYou can only search 5 tags and 6 images at once for now.\ne9 [tags...] ([# of images])') @cmds.command(aliases=['e9', '9'], brief='e926 | SFW', description='e926 | SFW\nTag-based search for e926.net\n\nYou can only search 5 tags and 6 images at once for now.\ne9 [tags...] ([# of images])')
async def e926(self, ctx, *args): async def e926(self, ctx, *args):
try: try:
kwargs = u.get_kwargs(ctx, args, limit=3) kwargs = u.get_kwargs(ctx, args, limit=3)
@ -1176,7 +1176,7 @@ class MsG:
await ctx.send('**Request timed out**') await ctx.send('**Request timed out**')
await ctx.message.add_reaction('\N{CROSS MARK}') await ctx.message.add_reaction('\N{CROSS MARK}')
@commands.group(aliases=['fave', 'fav', 'f']) @cmds.group(aliases=['fave', 'fav', 'f'])
async def favorite(self, ctx): async def favorite(self, ctx):
if not ctx.invoked_subcommand: if not ctx.invoked_subcommand:
await ctx.send('**Use a flag to manage favorites.**\n*Type* `{}help fav` *for more info.*'.format(ctx.prefix), delete_after=7) await ctx.send('**Use a flag to manage favorites.**\n*Type* `{}help fav` *for more info.*'.format(ctx.prefix), delete_after=7)
@ -1286,7 +1286,7 @@ class MsG:
pass pass
# Umbrella command structure to manage global, channel, and user blacklists # Umbrella command structure to manage global, channel, and user blacklists
@commands.group(aliases=['bl', 'b'], brief='Manage blacklists', description='Blacklist base command for managing blacklists\n\n`bl get [blacklist]` to show a blacklist\n`bl set [blacklist] [tags]` to replace a blacklist\n`bl clear [blacklist]` to clear a blacklist\n`bl add [blacklist] [tags]` to add tags to a blacklist\n`bl remove [blacklist] [tags]` to remove tags from a blacklist', usage='[flag] [blacklist] ([tags])') @cmds.group(aliases=['bl', 'b'], brief='Manage blacklists', description='Blacklist base command for managing blacklists\n\n`bl get [blacklist]` to show a blacklist\n`bl set [blacklist] [tags]` to replace a blacklist\n`bl clear [blacklist]` to clear a blacklist\n`bl add [blacklist] [tags]` to add tags to a blacklist\n`bl remove [blacklist] [tags]` to remove tags from a blacklist', usage='[flag] [blacklist] ([tags])')
async def blacklist(self, ctx): async def blacklist(self, ctx):
if not ctx.invoked_subcommand: if not ctx.invoked_subcommand:
await ctx.send('**Use a flag to manage blacklists.**\n*Type* `{}help bl` *for more info.*'.format(ctx.prefix), delete_after=7) await ctx.send('**Use a flag to manage blacklists.**\n*Type* `{}help bl` *for more info.*'.format(ctx.prefix), delete_after=7)
@ -1340,7 +1340,7 @@ class MsG:
await ctx.message.add_reaction('\N{CROSS MARK}') await ctx.message.add_reaction('\N{CROSS MARK}')
@__get_all_blacklists.command(name='guild', aliases=['g']) @__get_all_blacklists.command(name='guild', aliases=['g'])
@commands.has_permissions(manage_channels=True) @cmds.has_permissions(manage_channels=True)
async def ___get_all_guild_blacklists(self, ctx, *args): async def ___get_all_guild_blacklists(self, ctx, *args):
dest = u.get_kwargs(ctx, args)['destination'] dest = u.get_kwargs(ctx, args)['destination']
@ -1350,7 +1350,7 @@ class MsG:
await dest.send('\N{NO ENTRY SIGN} **__{} blacklists:__**\n\n{}'.format(guild.name, formatter.dict_tostring(self.blacklists['guild_blacklist'].get(guild.id, {})))) await dest.send('\N{NO ENTRY SIGN} **__{} blacklists:__**\n\n{}'.format(guild.name, formatter.dict_tostring(self.blacklists['guild_blacklist'].get(guild.id, {}))))
@__get_all_blacklists.command(name='user', aliases=['u', 'member', 'm']) @__get_all_blacklists.command(name='user', aliases=['u', 'member', 'm'])
@commands.is_owner() @cmds.is_owner()
async def ___get_all_user_blacklists(self, ctx, *args): async def ___get_all_user_blacklists(self, ctx, *args):
dest = u.get_kwargs(ctx, args)['destination'] dest = u.get_kwargs(ctx, args)['destination']
@ -1363,7 +1363,7 @@ class MsG:
await ctx.message.add_reaction('\N{CROSS MARK}') await ctx.message.add_reaction('\N{CROSS MARK}')
@_add_tags.command(name='global', aliases=['gl', 'g']) @_add_tags.command(name='global', aliases=['gl', 'g'])
@commands.is_owner() @cmds.is_owner()
async def __add_global_tags(self, ctx, *args): async def __add_global_tags(self, ctx, *args):
kwargs = u.get_kwargs(ctx, args) kwargs = u.get_kwargs(ctx, args)
dest, tags = kwargs['destination'], kwargs['remaining'] dest, tags = kwargs['destination'], kwargs['remaining']
@ -1384,7 +1384,7 @@ class MsG:
await dest.send('**Added to global blacklist:**\n```\n{}```'.format(formatter.tostring(tags)), delete_after=5) await dest.send('**Added to global blacklist:**\n```\n{}```'.format(formatter.tostring(tags)), delete_after=5)
@_add_tags.command(name='channel', aliases=['ch', 'c']) @_add_tags.command(name='channel', aliases=['ch', 'c'])
@commands.has_permissions(manage_channels=True) @cmds.has_permissions(manage_channels=True)
async def __add_channel_tags(self, ctx, *args): async def __add_channel_tags(self, ctx, *args):
kwargs = u.get_kwargs(ctx, args) kwargs = u.get_kwargs(ctx, args)
dest, tags = kwargs['destination'], kwargs['remaining'] dest, tags = kwargs['destination'], kwargs['remaining']
@ -1436,7 +1436,7 @@ class MsG:
await ctx.message.add_reaction('\N{CROSS MARK}') await ctx.message.add_reaction('\N{CROSS MARK}')
@_remove_tags.command(name='global', aliases=['gl', 'g']) @_remove_tags.command(name='global', aliases=['gl', 'g'])
@commands.is_owner() @cmds.is_owner()
async def __remove_global_tags(self, ctx, *args): async def __remove_global_tags(self, ctx, *args):
try: try:
kwargs = u.get_kwargs(ctx, args) kwargs = u.get_kwargs(ctx, args)
@ -1458,7 +1458,7 @@ class MsG:
await ctx.message.add_reaction('\N{CROSS MARK}') await ctx.message.add_reaction('\N{CROSS MARK}')
@_remove_tags.command(name='channel', aliases=['ch', 'c']) @_remove_tags.command(name='channel', aliases=['ch', 'c'])
@commands.has_permissions(manage_channels=True) @cmds.has_permissions(manage_channels=True)
async def __remove_channel_tags(self, ctx, *args): async def __remove_channel_tags(self, ctx, *args):
try: try:
kwargs = u.get_kwargs(ctx, args) kwargs = u.get_kwargs(ctx, args)
@ -1512,7 +1512,7 @@ class MsG:
await ctx.message.add_reaction('\N{CROSS MARK}') await ctx.message.add_reaction('\N{CROSS MARK}')
@_clear_blacklist.command(name='global', aliases=['gl', 'g']) @_clear_blacklist.command(name='global', aliases=['gl', 'g'])
@commands.is_owner() @cmds.is_owner()
async def __clear_global_blacklist(self, ctx, *args): async def __clear_global_blacklist(self, ctx, *args):
dest = u.get_kwargs(ctx, args)['destination'] dest = u.get_kwargs(ctx, args)['destination']
@ -1522,7 +1522,7 @@ class MsG:
await dest.send('**Global blacklist cleared**', delete_after=5) await dest.send('**Global blacklist cleared**', delete_after=5)
@_clear_blacklist.command(name='channel', aliases=['ch', 'c']) @_clear_blacklist.command(name='channel', aliases=['ch', 'c'])
@commands.has_permissions(manage_channels=True) @cmds.has_permissions(manage_channels=True)
async def __clear_channel_blacklist(self, ctx, *args): async def __clear_channel_blacklist(self, ctx, *args):
dest = u.get_kwargs(ctx, args)['destination'] dest = u.get_kwargs(ctx, args)['destination']

View file

@ -2,7 +2,7 @@ import asyncio
import traceback as tb import traceback as tb
import discord as d import discord as d
from discord.ext import commands from discord.ext import commands as cmds
from misc import exceptions as exc from misc import exceptions as exc
from utils import utils as u from utils import utils as u
@ -13,7 +13,7 @@ class Info:
def __init__(self, bot): def __init__(self, bot):
self.bot = bot self.bot = bot
# @commands.command(name='helptest', aliases=['h'], hidden=True) # @cmds.command(name='helptest', aliases=['h'], hidden=True)
# async def list_commands(self, ctx): # async def list_commands(self, ctx):
# embed = d.Embed(title='All possible commands:', color=ctx.me.color) # embed = d.Embed(title='All possible commands:', color=ctx.me.color)
# embed.set_author(name=ctx.me.display_name, icon_url=ctx.me.avatar_url) # embed.set_author(name=ctx.me.display_name, icon_url=ctx.me.avatar_url)
@ -22,7 +22,7 @@ class Info:
# #
# await ctx.send(embed=embed) # await ctx.send(embed=embed)
@commands.command(hidden=True) @cmds.command(hidden=True)
async def hi(self, ctx, *args): async def hi(self, ctx, *args):
dest = u.get_kwargs(ctx, args) dest = u.get_kwargs(ctx, args)
@ -35,7 +35,7 @@ class Info:
hello = '{} **Mod** {}'.format(hello[:7], hello[7:]) hello = '{} **Mod** {}'.format(hello[:7], hello[7:])
await dest.send(hello) await dest.send(hello)
@commands.group(name='info', aliases=['i']) @cmds.group(name='info', aliases=['i'])
async def info(self, ctx): async def info(self, ctx):
if invoked_subcommand is None: if invoked_subcommand is None:
await ctx.send('<embed>BOT INFO</embed>') await ctx.send('<embed>BOT INFO</embed>')

View file

@ -5,7 +5,7 @@ from datetime import datetime as dt
import discord as d import discord as d
from discord import errors as err from discord import errors as err
from discord.ext import commands from discord.ext import commands as cmds
from misc import exceptions as exc from misc import exceptions as exc
from misc import checks from misc import checks
@ -28,8 +28,8 @@ class Administration:
self.deleting = True self.deleting = True
self.bot.loop.create_task(self.delete()) self.bot.loop.create_task(self.delete())
@commands.group(aliases=['pru', 'clear', 'cl'], hidden=True) @cmds.group(aliases=['pru', 'clear', 'cl'], hidden=True)
@commands.is_owner() @cmds.is_owner()
async def prune(self, ctx): async def prune(self, ctx):
pass pass
@ -38,7 +38,7 @@ class Administration:
pass pass
@_prune_user.command(name='all', aliases=['a'], brief='Prune a user\'s messages from the guild', description='about flag centers on message 50 of 101 messages\n\npfg \{user id\} [before|after|about] [\{message id\}]\n\nExample:\npfg \{user id\} before \{message id\}', hidden=True) @_prune_user.command(name='all', aliases=['a'], brief='Prune a user\'s messages from the guild', description='about flag centers on message 50 of 101 messages\n\npfg \{user id\} [before|after|about] [\{message id\}]\n\nExample:\npfg \{user id\} before \{message id\}', hidden=True)
@commands.is_owner() @cmds.is_owner()
async def _prune_user_all(self, ctx, user, when=None, reference=None): async def _prune_user_all(self, ctx, user, when=None, reference=None):
def yes(msg): def yes(msg):
if msg.content.lower() == 'y' and msg.channel is ctx.channel and msg.author is ctx.author: if msg.content.lower() == 'y' and msg.channel is ctx.channel and msg.author is ctx.author:
@ -153,8 +153,8 @@ class Administration:
print('STOPPED : deleting #{}'.format(channel.id)) print('STOPPED : deleting #{}'.format(channel.id))
await channel.send('**Stopped queueing messages for deletion in** {}'.format(channel.mention), delete_after=5) await channel.send('**Stopped queueing messages for deletion in** {}'.format(channel.mention), delete_after=5)
@commands.command(name='autodelete', aliases=['autodel']) @cmds.command(name='autodelete', aliases=['autodel'])
@commands.has_permissions(administrator=True) @cmds.has_permissions(administrator=True)
async def auto_delete(self, ctx): async def auto_delete(self, ctx):
try: try:
if ctx.channel.id not in u.tasks['auto_del']: if ctx.channel.id not in u.tasks['auto_del']:
@ -173,8 +173,8 @@ class Administration:
await ctx.send('**Already auto-deleting in {}.** Type `stop` to stop.'.format(ctx.channel.mention), delete_after=7) await ctx.send('**Already auto-deleting in {}.** Type `stop` to stop.'.format(ctx.channel.mention), delete_after=7)
await ctx.message.add_reaction('\N{CROSS MARK}') await ctx.message.add_reaction('\N{CROSS MARK}')
@commands.group(aliases=['setting', 'set', 's']) @cmds.group(aliases=['setting', 'set', 's'])
@commands.has_permissions(administrator=True) @cmds.has_permissions(administrator=True)
async def settings(self, ctx): async def settings(self, ctx):
pass pass

View file

@ -9,7 +9,7 @@ from contextlib import redirect_stdout, suppress
import discord as d import discord as d
import pyrasite as pyr import pyrasite as pyr
from discord.ext import commands from discord.ext import commands as cmds
from misc import exceptions as exc from misc import exceptions as exc
from misc import checks from misc import checks
@ -22,8 +22,8 @@ class Bot:
self.bot = bot self.bot = bot
# Close connection to Discord - immediate offline # Close connection to Discord - immediate offline
@commands.command(name=',die', aliases=[',d'], brief='Kills the bot', description='BOT OWNER ONLY\nCloses the connection to Discord', hidden=True) @cmds.command(name=',die', aliases=[',d'], brief='Kills the bot', description='BOT OWNER ONLY\nCloses the connection to Discord', hidden=True)
@commands.is_owner() @cmds.is_owner()
async def die(self, ctx): async def die(self, ctx):
await ctx.message.add_reaction('\N{CRESCENT MOON}') await ctx.message.add_reaction('\N{CRESCENT MOON}')
@ -41,8 +41,8 @@ class Bot:
print('\n< < < < < < < < < < < <\nD I S C O N N E C T E D\n< < < < < < < < < < < <\n') print('\n< < < < < < < < < < < <\nD I S C O N N E C T E D\n< < < < < < < < < < < <\n')
# u.notify('D I S C O N N E C T E D') # u.notify('D I S C O N N E C T E D')
@commands.command(name=',restart', aliases=[',res', ',r'], hidden=True) @cmds.command(name=',restart', aliases=[',res', ',r'], hidden=True)
@commands.is_owner() @cmds.is_owner()
async def restart(self, ctx): async def restart(self, ctx):
await ctx.message.add_reaction('\N{SLEEPING SYMBOL}') await ctx.message.add_reaction('\N{SLEEPING SYMBOL}')
@ -62,15 +62,15 @@ class Bot:
os.execl(sys.executable, 'python3', 'run.py') os.execl(sys.executable, 'python3', 'run.py')
# Invite bot to bot owner's server # Invite bot to bot owner's server
@commands.command(name=',invite', aliases=[',inv', ',link'], brief='Invite the bot', description='BOT OWNER ONLY\nInvite the bot to a server (Requires admin)', hidden=True) @cmds.command(name=',invite', aliases=[',inv', ',link'], brief='Invite the bot', description='BOT OWNER ONLY\nInvite the bot to a server (Requires admin)', hidden=True)
@commands.is_owner() @cmds.is_owner()
async def invite(self, ctx): async def invite(self, ctx):
await ctx.message.add_reaction('\N{ENVELOPE}') await ctx.message.add_reaction('\N{ENVELOPE}')
await ctx.send('https://discordapp.com/oauth2/authorize?&client_id={}&scope=bot&permissions={}'.format(u.config['client_id'], u.config['permissions']), delete_after=5) await ctx.send('https://discordapp.com/oauth2/authorize?&client_id={}&scope=bot&permissions={}'.format(u.config['client_id'], u.config['permissions']), delete_after=5)
@commands.command(name=',status', aliases=[',presence', ',game'], hidden=True) @cmds.command(name=',status', aliases=[',presence', ',game'], hidden=True)
@commands.is_owner() @cmds.is_owner()
async def change_status(self, ctx, *, game=None): async def change_status(self, ctx, *, game=None):
if game: if game:
await self.bot.change_presence(game=d.Game(name=game)) await self.bot.change_presence(game=d.Game(name=game))
@ -83,8 +83,8 @@ class Bot:
u.dump(u.config, 'config.json', json=True) u.dump(u.config, 'config.json', json=True)
await ctx.send('**Game changed to** ` `') await ctx.send('**Game changed to** ` `')
@commands.command(name=',username', aliases=[',user'], hidden=True) @cmds.command(name=',username', aliases=[',user'], hidden=True)
@commands.is_owner() @cmds.is_owner()
async def change_username(self, ctx, *, username=None): async def change_username(self, ctx, *, username=None):
if username: if username:
await self.bot.edit(username=username) await self.bot.edit(username=username)
@ -121,8 +121,8 @@ class Tools:
async def refresh_err(self, m, o=''): async def refresh_err(self, m, o=''):
await m.edit(content='```\n{}```'.format(o)) await m.edit(content='```\n{}```'.format(o))
@commands.command(name=',console', aliases=[',con', ',c'], hidden=True) @cmds.command(name=',console', aliases=[',con', ',c'], hidden=True)
@commands.is_owner() @cmds.is_owner()
async def console(self, ctx): async def console(self, ctx):
def execute(msg): def execute(msg):
if msg.content.lower().startswith('exec ') and msg.author is ctx.author and msg.channel is ctx.channel: if msg.content.lower().startswith('exec ') and msg.author is ctx.author and msg.channel is ctx.channel:
@ -194,8 +194,8 @@ class Tools:
sys.stderr = sys.__stderr__ sys.stderr = sys.__stderr__
print('Reset sys output.') print('Reset sys output.')
@commands.command(name=',execute', aliases=[',exec'], hidden=True) @cmds.command(name=',execute', aliases=[',exec'], hidden=True)
@commands.is_owner() @cmds.is_owner()
async def execute(self, ctx, *, exe): async def execute(self, ctx, *, exe):
try: try:
with io.StringIO() as buff, redirect_stdout(buff): with io.StringIO() as buff, redirect_stdout(buff):
@ -205,8 +205,8 @@ class Tools:
except Exception: except Exception:
await self.generate(ctx, exe, f'\n{tb.format_exc()}') await self.generate(ctx, exe, f'\n{tb.format_exc()}')
@commands.command(name=',evaluate', aliases=[',eval'], hidden=True) @cmds.command(name=',evaluate', aliases=[',eval'], hidden=True)
@commands.is_owner() @cmds.is_owner()
async def evaluate(self, ctx, *, evl): async def evaluate(self, ctx, *, evl):
try: try:
with io.StringIO() as buff, redirect_stdout(buff): with io.StringIO() as buff, redirect_stdout(buff):
@ -216,8 +216,8 @@ class Tools:
except Exception: except Exception:
await self.generate(ctx, evl, f'\n{tb.format_exc()}') await self.generate(ctx, evl, f'\n{tb.format_exc()}')
@commands.group(aliases=[',db'], hidden=True) @cmds.group(aliases=[',db'], hidden=True)
@commands.is_owner() @cmds.is_owner()
async def debug(self, ctx): async def debug(self, ctx):
console = await self.generate(ctx) console = await self.generate(ctx)
@ -229,6 +229,6 @@ class Tools:
async def _inspect(self, ctx, *, input_): async def _inspect(self, ctx, *, input_):
pass pass
# @commands.command(name='endpoint', aliases=['end']) # @cmds.command(name='endpoint', aliases=['end'])
# async def get_endpoint(self, ctx, *args): # async def get_endpoint(self, ctx, *args):
# await ctx.send(f'```\n{await u.fetch(f"https://{args[0]}/{args[1]}/{args[2]}", params={args[3]: args[4], "limit": 1}, json=True)}```') # await ctx.send(f'```\n{await u.fetch(f"https://{args[0]}/{args[1]}/{args[2]}", params={args[3]: args[4], "limit": 1}, json=True)}```')

View file

@ -11,7 +11,7 @@ import httplib2
import requests_oauthlib as ro import requests_oauthlib as ro
from apiclient import http from apiclient import http
from apiclient.discovery import build from apiclient.discovery import build
from discord.ext import commands from discord.ext import commands as cmds
from oauth2client.client import flow_from_clientsecrets from oauth2client.client import flow_from_clientsecrets
#from run import config #from run import config
@ -31,7 +31,7 @@ class Utils:
def __init__(self, bot): def __init__(self, bot):
self.bot = bot self.bot = bot
@commands.command(name='lastcommand', aliases=['last', 'l', ','], brief='Reinvokes last successful command', description='Executes last successfully executed command') @cmds.command(name='lastcommand', aliases=['last', 'l', ','], brief='Reinvokes last successful command', description='Executes last successfully executed command')
async def last_command(self, ctx, arg='None'): async def last_command(self, ctx, arg='None'):
try: try:
context = u.last_commands[ctx.author.id] context = u.last_commands[ctx.author.id]
@ -46,17 +46,17 @@ class Utils:
await ctx.message.add_reaction('\N{CROSS MARK}') await ctx.message.add_reaction('\N{CROSS MARK}')
# Displays latency # Displays latency
@commands.command(aliases=['p'], brief='Pong!', description='Returns latency from bot to Discord servers, not to user') @cmds.command(aliases=['p'], brief='Pong!', description='Returns latency from bot to Discord servers, not to user')
async def ping(self, ctx): async def ping(self, ctx):
await ctx.message.add_reaction('\N{TABLE TENNIS PADDLE AND BALL}') await ctx.message.add_reaction('\N{TABLE TENNIS PADDLE AND BALL}')
await ctx.send(ctx.author.mention + ' \N{TABLE TENNIS PADDLE AND BALL} `' + str(round(self.bot.latency * 1000)) + 'ms`', delete_after=5) await ctx.send(ctx.author.mention + ' \N{TABLE TENNIS PADDLE AND BALL} `' + str(round(self.bot.latency * 1000)) + 'ms`', delete_after=5)
@commands.command(aliases=['pre'], brief='List bot prefixes', description='Shows all used prefixes') @cmds.command(aliases=['pre'], brief='List bot prefixes', description='Shows all used prefixes')
async def prefix(self, ctx): async def prefix(self, ctx):
await ctx.send('**Prefix:** `{}`'.format('` or `'.join(u.settings['prefixes'][ctx.guild.id] if ctx.guild.id in u.settings['prefixes'] else u.config['prefix']))) await ctx.send('**Prefix:** `{}`'.format('` or `'.join(u.settings['prefixes'][ctx.guild.id] if ctx.guild.id in u.settings['prefixes'] else u.config['prefix'])))
@commands.group(name=',send', aliases=[',s'], hidden=True) @cmds.group(name=',send', aliases=[',s'], hidden=True)
@commands.is_owner() @cmds.is_owner()
async def send(self, ctx): async def send(self, ctx):
pass pass
@ -81,7 +81,7 @@ class Utils:
async def send_user(self, ctx, user, *, message): async def send_user(self, ctx, user, *, message):
await d.utils.get(self.bot.get_all_members(), id=int(user)).send(message) await d.utils.get(self.bot.get_all_members(), id=int(user)).send(message)
@commands.command(aliases=['authenticateupload', 'authupload', 'authup', 'auth'], hidden=True) @cmds.command(aliases=['authenticateupload', 'authupload', 'authup', 'auth'], hidden=True)
async def authenticate_upload(self, ctx): async def authenticate_upload(self, ctx):
global youtube global youtube
flow = flow_from_clientsecrets('client_secrets.json', scope='https://www.googleapis.com/auth/youtube.upload', flow = flow_from_clientsecrets('client_secrets.json', scope='https://www.googleapis.com/auth/youtube.upload',
@ -92,8 +92,8 @@ class Utils:
youtube = build('youtube', 'v3', http=credentials.authorize(http.build_http())) youtube = build('youtube', 'v3', http=credentials.authorize(http.build_http()))
print('Service built.') print('Service built.')
@commands.command(aliases=['up', 'u', 'vid', 'v'], hidden=True) @cmds.command(aliases=['up', 'u', 'vid', 'v'], hidden=True)
@commands.has_permissions(administrator=True) @cmds.has_permissions(administrator=True)
async def upload(self, ctx): async def upload(self, ctx):
global youtube global youtube
attachments = ctx.message.attachments attachments = ctx.message.attachments

View file

@ -13,7 +13,7 @@ from urllib.parse import urlparse
import discord as d import discord as d
from discord import errors as err from discord import errors as err
from discord import utils from discord import utils
from discord.ext import commands from discord.ext import commands as cmds
from discord.ext.commands import errors as errext from discord.ext.commands import errors as errext
from misc import exceptions as exc from misc import exceptions as exc
@ -23,10 +23,10 @@ from utils import utils as u
log.basicConfig(level=log.WARNING) log.basicConfig(level=log.WARNING)
# class HelpFormatter(commands.HelpFormatter): # class HelpFormatter(cmds.HelpFormatter):
# #
# async def format(self): # async def format(self):
# self._paginator = commands.Paginator() # self._paginator = cmds.Paginator()
# #
# # we need a padding of ~80 or so # # we need a padding of ~80 or so
# #
@ -36,7 +36,7 @@ log.basicConfig(level=log.WARNING)
# # <description> portion # # <description> portion
# self._paginator.add_line(description, empty=True) # self._paginator.add_line(description, empty=True)
# #
# if isinstance(self.command, commands.Command): # if isinstance(self.command, cmds.Command):
# # <signature portion> # # <signature portion>
# signature = self.get_command_signature() # signature = self.get_command_signature()
# self._paginator.add_line(signature, empty=True) # self._paginator.add_line(signature, empty=True)
@ -56,7 +56,7 @@ log.basicConfig(level=log.WARNING)
def get_prefix(bot, message): def get_prefix(bot, message):
return u.settings['prefixes'].get(message.guild.id, u.config['prefix']) return u.settings['prefixes'].get(message.guild.id, u.config['prefix'])
bot = commands.Bot(command_prefix=get_prefix, formatter=commands.HelpFormatter(show_check_failure=True), description='Modumind - A booru bot with a side of management\n\nS for single command\nG for group command', help_attrs={'aliases': ['h']}, pm_help=None) bot = cmds.Bot(command_prefix=get_prefix, formatter=cmds.HelpFormatter(show_check_failure=True), description='Modumind - A booru bot with a side of management\n\nS for single command\nG for group command', help_attrs={'aliases': ['h']}, pm_help=None)
@bot.command(help='help', brief='brief', description='description', usage='usage') @bot.command(help='help', brief='brief', description='description', usage='usage')
async def test(ctx): async def test(ctx):
@ -170,7 +170,7 @@ def after(voice, error):
# suggested = u.setdefault('cogs/suggested.pkl', {'last_update': 'None', 'tags': {}, 'total': 0}) # suggested = u.setdefault('cogs/suggested.pkl', {'last_update': 'None', 'tags': {}, 'total': 0})
@bot.command(name=',test', hidden=True) @bot.command(name=',test', hidden=True)
@commands.is_owner() @cmds.is_owner()
async def test(ctx): async def test(ctx):
post = await u.fetch('https://e621.net/post/show.json?id=1145042', json=True) post = await u.fetch('https://e621.net/post/show.json?id=1145042', json=True)