2017-09-24 11:05:28 -04:00
import asyncio
2017-11-19 23:10:48 -05:00
from datetime import datetime as dt
2017-10-02 15:24:34 -04:00
import mimetypes
import os
import tempfile
2017-10-12 22:27:21 -04:00
import traceback as tb
2017-10-02 15:24:34 -04:00
import webbrowser
2017-10-12 22:27:21 -04:00
2017-10-30 00:21:00 -04:00
import discord as d
2017-11-20 06:18:42 -05:00
from discord . ext import commands as cmds
2017-10-12 22:27:21 -04:00
2017-10-11 03:01:13 -04:00
#from run import config
2017-09-24 11:05:28 -04:00
from cogs import booru
from misc import exceptions as exc
2017-10-12 22:27:21 -04:00
from misc import checks
from utils import utils as u
2017-09-24 11:05:28 -04:00
from utils import formatter
2017-10-11 03:01:13 -04:00
youtube = None
2017-10-02 15:24:34 -04:00
2017-10-11 03:01:13 -04:00
tempfile . tempdir = os . getcwd ( )
2017-10-02 15:24:34 -04:00
2017-10-12 22:27:21 -04:00
2017-09-24 11:05:28 -04:00
class Utils :
2017-10-20 16:26:13 -04:00
def __init__ ( self , bot ) :
self . bot = bot
2017-10-17 19:04:45 -04:00
2017-11-20 06:18:42 -05:00
@cmds.command ( name = ' lastcommand ' , aliases = [ ' last ' , ' l ' , ' , ' ] , brief = ' Reinvokes last successful command ' , description = ' Executes last successfully executed command ' )
2017-11-19 23:05:38 -05:00
async def last_command ( self , ctx , arg = ' None ' ) :
try :
context = u . last_commands [ ctx . author . id ]
if arg == ' show ' or arg == ' sh ' or arg == ' s ' :
2018-11-06 02:55:08 -05:00
await ctx . send ( f ' ` { context . prefix } { context . invoked_with } { " " . join ( context . args [ 2 : ] ) } ` ' )
2017-11-19 23:05:38 -05:00
else :
await ctx . invoke ( context . command , * context . args [ 2 : ] , * * context . kwargs )
2017-10-17 19:04:45 -04:00
2017-11-19 23:05:38 -05:00
except KeyError :
2018-11-06 02:55:08 -05:00
await ctx . send ( ' **No last command** ' )
2017-11-19 23:05:38 -05:00
await ctx . message . add_reaction ( ' \N{CROSS MARK} ' )
2017-10-17 19:04:45 -04:00
2017-10-20 16:26:13 -04:00
# Displays latency
2017-11-20 06:18:42 -05:00
@cmds.command ( aliases = [ ' p ' ] , brief = ' Pong! ' , description = ' Returns latency from bot to Discord servers, not to user ' )
2017-10-20 16:26:13 -04:00
async def ping ( self , ctx ) :
2017-11-06 02:00:58 -05:00
await ctx . message . add_reaction ( ' \N{TABLE TENNIS PADDLE AND BALL} ' )
2018-11-06 02:55:08 -05:00
await ctx . send ( ctx . author . mention + ' \N{TABLE TENNIS PADDLE AND BALL} ` ' + str ( round ( self . bot . latency * 1000 ) ) + ' ms` ' )
2017-10-17 19:04:45 -04:00
2018-11-03 20:04:39 -04:00
@cmds.command ( aliases = [ ' pre ' , ' prefixes ' ] , brief = ' List bot prefixes ' , description = ' Shows all used prefixes ' )
2017-10-20 16:26:13 -04:00
async def prefix ( self , ctx ) :
2017-10-20 16:25:40 -04:00
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 ' ] ) ) )
2017-10-20 16:26:13 -04:00
2017-11-20 06:18:42 -05:00
@cmds.group ( name = ' ,send ' , aliases = [ ' ,s ' ] , hidden = True )
@cmds.is_owner ( )
2017-10-20 16:26:13 -04:00
async def send ( self , ctx ) :
pass
@send.command ( name = ' guild ' , aliases = [ ' g ' , ' server ' , ' s ' ] )
async def send_guild ( self , ctx , guild , channel , * , message ) :
2017-10-30 00:21:45 -04:00
try :
tempchannel = d . utils . find ( lambda m : m . name == channel , d . utils . find (
lambda m : m . name == guild , self . bot . guilds ) . channels )
try :
await tempchannel . send ( message )
except AttributeError :
2018-11-06 02:55:08 -05:00
await ctx . send ( ' **Invalid channel** ' )
2017-11-06 02:00:58 -05:00
await ctx . message . add_reaction ( ' \N{CROSS MARK} ' )
2017-10-30 00:21:45 -04:00
except AttributeError :
2018-11-06 02:55:08 -05:00
await ctx . send ( ' **Invalid guild** ' )
2017-11-06 02:00:58 -05:00
await ctx . message . add_reaction ( ' \N{CROSS MARK} ' )
2017-10-20 16:26:13 -04:00
@send.command ( name = ' user ' , aliases = [ ' u ' , ' member ' , ' m ' ] )
async def send_user ( self , ctx , user , * , message ) :
2017-10-30 00:21:45 -04:00
await d . utils . get ( self . bot . get_all_members ( ) , id = int ( user ) ) . send ( message )