college-bot-v1/main.py
2023-01-18 20:54:48 +00:00

86 lines
2.2 KiB
Python

import discord
from discord.ext import commands
from asyncio import Lock
import config
from utils import registry, console
intents = discord.Intents.default()
intents += discord.Intents.messages
intents += discord.Intents.message_content
intents += discord.Intents.members
intents += discord.Intents.presences
bot = commands.Bot(
commands.when_mentioned_or("h!"),
debug_guilds=config.guilds,
allowed_mentions=discord.AllowedMentions.none(),
intents=intents,
)
bot.training_lock = Lock()
extensions = [
"jishaku",
"cogs.verify",
"cogs.mod",
"cogs.events",
"cogs.assignments",
"cogs.timetable",
"cogs.other",
"cogs.starboard",
"cogs.uptime",
]
for ext in extensions:
try:
bot.load_extension(ext)
except discord.ExtensionFailed as e:
console.log(f"[red]Failed to load extension {ext}: {e}")
else:
console.log(f"Loaded extension [green]{ext}")
bot.loop.run_until_complete(registry.create_all())
@bot.listen()
async def on_connect():
console.log("[green]Connected to discord!")
@bot.listen("on_application_command_error")
async def on_application_command_error(ctx: discord.ApplicationContext, error: Exception):
await ctx.respond("Application Command Error: `%r`" % error)
raise error
@bot.listen("on_command_error")
async def on_command_error(ctx: commands.Context, error: Exception):
if isinstance(error, commands.CommandNotFound):
return
await ctx.reply("Command Error: `%r`" % error)
raise error
@bot.listen("on_application_command")
async def on_application_command(ctx: discord.ApplicationContext):
console.log(
"{0.author} ({0.author.id}) used application command /{0.command.qualified_name} in "
"#{0.channel}, {0.guild}".format(ctx)
)
@bot.event
async def on_ready():
console.log("Logged in as", bot.user)
@bot.slash_command()
async def ping(ctx: discord.ApplicationContext):
# noinspection SpellCheckingInspection
"""Checks the bot's response time"""
gateway = round(ctx.bot.latency * 1000, 2)
return await ctx.respond(f"\N{white heavy check mark} Pong! `{gateway}ms`.")
if __name__ == "__main__":
print("Starting...")
bot.run(config.token)