FunkyBot/__main__.py

86 lines
2.6 KiB
Python
Raw Permalink Normal View History

2025-06-16 08:23:56 +00:00
import os
import asyncio
import discord
2025-06-16 08:23:56 +00:00
from libs.Db import Db
from libs.BotLog import BotLog
from libs.Guilds import Guilds
from libs.Channels import Channels
2025-06-16 08:23:56 +00:00
from discord.ext import commands
from dotenv import load_dotenv
load_dotenv()
token = os.getenv("DISCORD_TOKEN")
prefix = os.getenv("COMMAND_PREFIX")
guild_id = os.getenv("GUILD_ID")
dev_mode = os.getenv("DEV_MODE")
db_conn_str = os.getenv("DB_CONN_STR")
2025-06-16 08:23:56 +00:00
bot_intents = discord.Intents.default()
bot_intents.message_content = True
bot_intents.members = True
class FunkyBot(commands.Bot):
def __init__(self):
super().__init__(
command_prefix=prefix,
intents=bot_intents
)
self.log_handler = BotLog("bot.log")
self.db = Db(db_conn_str, False)
2025-06-16 08:23:56 +00:00
self.guild_id = guild_id
self.guild = None
self.dev_mode = dev_mode == "1"
2025-06-16 08:23:56 +00:00
async def on_ready(self):
print(f"Logged in as {self.user.name}")
self.guild = Guilds().get_guild(self)
await self.tree.sync(guild=self.guild)
2025-06-16 08:23:56 +00:00
async def async_cleanup(self):
channels_to_purge = {
"add-roles": "FunkyBot is currently sleeping. Please try again once he has awakened.",
"live-penguins": "The FunkyBot Twitch Live Notification System is currently offline. Live Alerts will resume later."
}
for channel, message in channels_to_purge.items():
the_channel = await Channels().get_channel(self.guild, channel)
await the_channel.purge()
if message is not None:
# await the_channel.send(message)
...
async def close(self):
await self.async_cleanup()
await super().close()
2025-06-16 08:23:56 +00:00
async def on_member_join(self, member):
channel = discord.utils.get(self.guild.channels, name="general")
role = discord.utils.get(await self.guild.fetch_roles(), name="Chinstrap Penguins")
2025-06-16 08:23:56 +00:00
if role is not None:
if role not in member.roles:
await member.add_roles(role)
await channel.send(f"{role.mention} Another Penguin has joined the Collective. Say hi to {member.mention}!")
2025-06-16 08:23:56 +00:00
async def load_cogs(self):
for filename in os.listdir("./cogs"):
if filename.endswith(".py"):
await self.load_extension(f"cogs.{filename[:-3]}")
print(f"Loaded {filename[:-3]}")
@commands.command()
async def reload_cog(self, ctx, cog):
ctx.message.delete()
await self.reload_cog(ctx, f"cogs.{cog}")
print(f"Reloaded {cog}")
2025-06-16 08:23:56 +00:00
async def main():
bot = FunkyBot()
async with bot:
await bot.load_cogs()
2025-06-16 08:23:56 +00:00
await bot.start(token)
asyncio.run(main())