2017-09-24 15:05:28 +00:00
import json
try :
with open ( ' config.json ' ) as infile :
config = json . load ( infile )
print ( ' \" config.json \" loaded. ' )
except FileNotFoundError :
with open ( ' config.json ' , ' w ' ) as outfile :
2017-09-24 19:13:36 +00:00
json . dump ( { ' client_id ' : 0 , ' owner_id ' : 0 , ' permissions ' : 388160 , ' prefix ' : ' , ' , ' shutdown_channel ' : 0 , ' startup_channel ' : 0 , ' token ' : ' str ' } , outfile , indent = 4 , sort_keys = True )
2017-09-24 15:05:28 +00:00
raise FileNotFoundError ( ' Config file not found: \" config.json \" created with abstract values. Restart \" run.py \" with correct values. ' )
2017-09-24 18:09:02 +00:00
import asyncio
import discord
import traceback
from discord import utils
from discord . ext import commands
from cogs import booru , info , tools
from misc import checks
from misc import exceptions as exc
2017-09-24 19:13:36 +00:00
bot = commands . Bot ( command_prefix = commands . when_mentioned_or ( config [ ' prefix ' ] ) , description = ' Experimental booru bot ' )
2017-09-24 15:05:28 +00:00
# Send and print ready message to #testing and console after logon
@bot.event
async def on_ready ( ) :
2017-09-24 19:13:36 +00:00
if isinstance ( bot . get_channel ( config [ ' startup_channel ' ] ) , discord . TextChannel ) :
await bot . get_channel ( config [ ' startup_channel ' ] ) . send ( ' Hello how are? **Have day.** 🌈 \n <embed>[STARTUP-INFO]</embed> ' )
2017-09-24 15:05:28 +00:00
print ( ' Connected. ' )
print ( ' Username: ' + bot . user . name )
print ( ' ------- ' )
# Close connection to Discord - immediate offline
2017-09-24 15:32:35 +00:00
@bot.command ( name = ' ,die ' , aliases = [ ' ,d ' , ' ,close ' , ' ,kill ' ] , brief = ' Kills the bot ' , description = ' BOT OWNER ONLY \n Closes the connection to Discord ' , hidden = True )
2017-09-24 15:05:28 +00:00
@checks.del_ctx ( )
@commands.is_owner ( )
async def die ( ctx ) :
try :
2017-09-24 19:13:36 +00:00
await bot . get_channel ( config [ ' shutdown_channel ' ] ) . send ( ' Am go bye. **Have night.** 💤 \n <embed>[SHUTDOWN-INFO]</embed> ' )
2017-09-24 15:05:28 +00:00
await bot . close ( )
print ( ' ------- ' )
print ( ' Closed. ' )
except Exception :
await ctx . send ( exc . base )
traceback . print_exc ( limit = 1 )
# Invite bot to bot owner's server
@bot.command ( name = ' ,invite ' , aliases = [ ' ,inv ' , ' ,link ' ] , brief = ' Invite the bot ' , description = ' BOT OWNER ONLY \n Invite the bot to a server (Requires admin) ' , hidden = True )
@checks.del_ctx ( )
@commands.is_owner ( )
async def invite ( ctx ) :
try :
2017-09-24 19:30:30 +00:00
await ctx . send ( ' 🔗 https://discordapp.com/oauth2/authorize?&client_id= ' + str ( config [ ' client_id ' ] ) + ' &scope=bot&permissions= ' + str ( config [ ' permissions ' ] ) )
2017-09-24 15:05:28 +00:00
except Exception :
await ctx . send ( exc . base )
traceback . print_exc ( limit = 1 )
@bot.command ( brief = ' [IN TESTING] ' , description = ' [IN TESTING] ' , hidden = True )
async def hi ( ctx ) :
try :
hello = ' Hello, ' + ctx . message . author . mention + ' . '
if ctx . message . author . id == checks . owner_id :
hello + = ' .. ***Master.*** uwu '
elif ctx . message . author . guild_permissions . administrator :
hello = hello [ : 7 ] + ' **Admin** ' + hello [ 7 : ]
elif ctx . message . author . guild_permissions . ban_members :
hello = hello [ : 7 ] + ' **Mod** ' + hello [ 7 : ]
await ctx . send ( hello )
except Exception :
await ctx . send ( exc . base )
traceback . print_exc ( limit = 1 )
@bot.command ( hidden = True )
@checks.del_ctx ( )
async def test ( ctx ) :
pass
bot . add_cog ( info . Info ( bot ) )
bot . add_cog ( tools . Utils ( bot ) )
bot . add_cog ( booru . MsG ( bot ) )
bot . run ( config [ ' token ' ] )