mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-12-08 02:12:32 -05:00
First commit
This commit is contained in:
85
core/events.py
Normal file
85
core/events.py
Normal file
@@ -0,0 +1,85 @@
|
||||
import discord
|
||||
import traceback
|
||||
import datetime
|
||||
import logging
|
||||
from discord.ext import commands
|
||||
from core.utils.chat_formatting import inline
|
||||
|
||||
log = logging.getLogger("red")
|
||||
|
||||
|
||||
def init_events(bot):
|
||||
|
||||
@bot.event
|
||||
async def on_connect():
|
||||
if bot.uptime is None:
|
||||
print("Connected to Discord. Getting ready...")
|
||||
|
||||
@bot.event
|
||||
async def on_ready():
|
||||
if bot.uptime is None:
|
||||
bot.uptime = datetime.datetime.utcnow()
|
||||
print("Loading cogs...")
|
||||
# load the packages at this point
|
||||
total_channels = len([c for c in bot.get_all_channels()])
|
||||
total_users = len(set([m for m in bot.get_all_members()]))
|
||||
print("Ready and operational on {} servers.\n"
|
||||
"".format(len(bot.guilds)))
|
||||
|
||||
@bot.event
|
||||
async def on_command_error(error, ctx):
|
||||
if isinstance(error, commands.MissingRequiredArgument):
|
||||
await bot.send_cmd_help(ctx)
|
||||
elif isinstance(error, commands.BadArgument):
|
||||
await bot.send_cmd_help(ctx)
|
||||
elif isinstance(error, commands.DisabledCommand):
|
||||
await ctx.send("That command is disabled.")
|
||||
elif isinstance(error, commands.CommandInvokeError):
|
||||
# Need to test if the following still works
|
||||
"""
|
||||
no_dms = "Cannot send messages to this user"
|
||||
is_help_cmd = ctx.command.qualified_name == "help"
|
||||
is_forbidden = isinstance(error.original, discord.Forbidden)
|
||||
if is_help_cmd and is_forbidden and error.original.text == no_dms:
|
||||
msg = ("I couldn't send the help message to you in DM. Either"
|
||||
" you blocked me or you disabled DMs in this server.")
|
||||
await ctx.send(msg)
|
||||
return
|
||||
"""
|
||||
log.exception("Exception in command '{}'"
|
||||
"".format(ctx.command.qualified_name),
|
||||
exc_info=error.original)
|
||||
message = ("Error in command '{}'. Check your console or "
|
||||
"logs for details."
|
||||
"".format(ctx.command.qualified_name))
|
||||
exception_log = ("Exception in command '{}'\n"
|
||||
"".format(ctx.command.qualified_name))
|
||||
exception_log += "".join(traceback.format_exception(type(error),
|
||||
error, error.__traceback__))
|
||||
bot._last_exception = exception_log
|
||||
await ctx.send(inline(message))
|
||||
elif isinstance(error, commands.CommandNotFound):
|
||||
pass
|
||||
elif isinstance(error, commands.CheckFailure):
|
||||
await ctx.send("⛔")
|
||||
elif isinstance(error, commands.NoPrivateMessage):
|
||||
await ctx.send("That command is not available in DMs.")
|
||||
elif isinstance(error, commands.CommandOnCooldown):
|
||||
await ctx.send("This command is on cooldown. "
|
||||
"Try again in {:.2f}s"
|
||||
"".format(error.retry_after))
|
||||
else:
|
||||
log.exception(type(error).__name__, exc_info=error)
|
||||
|
||||
@bot.event
|
||||
async def on_message(message):
|
||||
bot.counter["messages_read"] += 1
|
||||
await bot.process_commands(message)
|
||||
|
||||
@bot.event
|
||||
async def on_resumed():
|
||||
bot.counter["sessions_resumed"] += 1
|
||||
|
||||
@bot.event
|
||||
async def on_command(command):
|
||||
bot.counter["processed_commands"] += 1
|
||||
Reference in New Issue
Block a user