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:
commit
36041b2dd8
6 changed files with 70 additions and 70 deletions
|
@ -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']
|
||||||
|
|
||||||
|
|
|
@ -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>')
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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)}```')
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue