forked from olliequ/KittyBot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbot.py
executable file
·67 lines (47 loc) · 1.94 KB
/
bot.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
#!/usr/bin/env python
import os
import dotenv, aiohttp
import hikari, lightbulb
import emoji_cache
dotenv.load_dotenv()
bot = lightbulb.BotApp(
os.environ["BOT_TOKEN"],
prefix="+",
banner=None,
intents=hikari.Intents.ALL,
default_enabled_guilds=tuple(int(v) for v in os.environ["DEFAULT_GUILDS"].split(','))
)
@bot.listen(hikari.StartedEvent)
async def botStartup(event):
print("Bot has started up!")
await emoji_cache.cache_all_custom(bot)
@bot.listen(lightbulb.CommandErrorEvent)
async def on_error(event: lightbulb.CommandErrorEvent) -> None:
if isinstance(event.exception, lightbulb.CommandInvocationError):
await event.context.respond(
f"Something went wrong during invocation of command `{event.context.command.name}`.")
raise event.exception
# Unwrap the exception to get the original cause
exception = event.exception.__cause__ or event.exception
if isinstance(exception, lightbulb.NotOwner):
await event.context.respond("You are not the owner of this bot.")
elif isinstance(exception, lightbulb.CommandIsOnCooldown):
await event.context.respond(
f"This command is on cooldown for you {event.context.author.mention}. Try again in `{exception.retry_after:.2f}` seconds.")
"""
Below creates 2 listeners, one for when the bot is starting, and one for when the bot is stopping.
When the bot is starting, it creates a new aiohttp.ClientSession named aio_session and stores it in the bot.d data store.
When the bot is stopping, it closes the aio_session.
"""
@bot.listen()
async def on_starting(event: hikari.StartingEvent) -> None:
bot.d.aio_session = aiohttp.ClientSession()
@bot.listen()
async def on_stopping(event: hikari.StoppingEvent) -> None:
await bot.d.aio_session.close()
bot.load_extensions_from("./extensions/", must_exist=True)
if __name__ == "__main__":
if os.name != "nt":
import uvloop
uvloop.install()
bot.run()