-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmain.py
97 lines (69 loc) · 2.77 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import json
import os
import logging
import random
import aiocron
import discord
from discord.ext import commands
from os import listdir
from os.path import isfile, join
import sys, traceback
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv("DISCORD_TOKEN")
PHTOKEN = os.getenv("PHTOKEN")
logger = logging.getLogger('trashbot')
logger.setLevel(logging.DEBUG)
fh = logging.FileHandler('bot.log', 'w', 'utf-8')
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
fh.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
logger.addHandler(fh)
logger.addHandler(ch)
def get_prefix(bot, message):
"""A callable Prefix for our bot. This could be edited to allow per server prefixes."""
# Notice how you can use spaces in prefixes. Try to keep them simple though.
prefixes = ['k!']
# Check to see if we are outside of a guild. e.g DM's etc.
if not message.guild:
# Only allow ? to be used in DMs
return '?'
# If we are in a guild, we allow for the user to mention us or use any of the prefixes in our list.
return commands.when_mentioned_or(*prefixes)(bot, message)
cogs_dir = "cogs"
intents = discord.Intents.default()
intents.members = True
bot = commands.Bot(command_prefix=get_prefix, intents=intents)
if __name__ == '__main__':
bot.cvars = {}
bot.cvars["PHTOKEN"] = PHTOKEN
bot.cvars["FFMPEG_PATH"] = os.getenv("FFMPEG_PATH")
bot.cvars["SNDS_PATH"] = os.getenv("SNDS_PATH")
bot.cvars["state"] = {"guild": {}, "global": {}}
with open('resources/db.json', 'r', encoding="utf8") as file:
dbjson = json.loads(file.read())
bot.cvars["slurps"] = {"slurs": [dbjson["slurs"][k]["slur"] for k in dbjson["slurs"]],
"chances": [dbjson["slurs"][k]["chance"] for k in dbjson["slurs"]]}
bot.cvars["statuses"] = {"statuses": [dbjson["statuses"][k]["status"] for k in dbjson["statuses"]],
"chances": [dbjson["statuses"][k]["chance"] for k in dbjson["statuses"]]}
for extension in [f.replace('.py', '') for f in listdir(cogs_dir) if isfile(join(cogs_dir, f))]:
try:
bot.load_extension(cogs_dir + "." + extension)
except (discord.ClientException, ModuleNotFoundError):
logger.error(f'Failed to load extension {extension}.')
traceback.print_exc()
@aiocron.crontab('0 14 * * *')
async def trigger_cron():
from cogs.shitpost import set_daily_tension
await set_daily_tension(bot)
@bot.event
async def on_ready():
logger.debug(f'\n\nLogged in as: {bot.user.name} - {bot.user.id}\nVersion: {discord.__version__}\n')
await bot.change_presence(activity=discord.Game(
random.choices(population=bot.cvars["statuses"]["statuses"], weights=bot.cvars["statuses"]["chances"])[0]
))
logger.debug(f'Successfully logged in and booted...!')
bot.run(TOKEN)