Files
discord-guess-img-bot/discord-bot.py
T

75 lines
2.2 KiB
Python
Raw Normal View History

2026-02-27 16:05:14 +08:00
"""
Discord Bot - 主程式
開發者:唐宋
"""
import os
import discord
from discord.ext import commands
from dotenv import load_dotenv
# 載入環境變數
load_dotenv()
# 設定 bot token
TOKEN = os.getenv('DISCORD_BOT_TOKEN')
# 設定 bot
intents = discord.Intents.default()
intents.message_content = True
intents.guilds = True
bot = commands.Bot(command_prefix='!', intents=intents)
# 機器人啟動時執行
@bot.event
async def on_ready():
print(f'✅ {bot.user.name} 已上線!')
print(f'📝 機器人 ID: {bot.user.id}')
print(f'🌐 連接到的伺服器數量: {len(bot.guilds)}')
await bot.change_presence(activity=discord.Activity(
type=discord.ActivityType.watching,
name='等待指令'
))
# 載入 Cog
try:
await bot.load_extension("cogs.base") # 使用標準 load_extension
await bot.load_extension("cogs.lottery") # 例如你剛剛的 Lottery Cog
print('✅ Cogs 已載入')
except Exception as e:
print(f'❌ 載入 Cogs 時發生錯誤: {e}')
# 同步 Slash Commands 到指定伺服器
try:
guild = discord.Object(id=605678541530726421)
synced = await bot.tree.sync(guild=guild)
print(f'✅ 已同步 {len(synced)} 個 Slash Commands 到伺服器 {guild.id}')
for cmd in synced:
print(f' /{cmd.name} - {cmd.description}')
except Exception as e:
print(f'❌ 同步 Slash Commands 時發生錯誤: {e}')
# 歡迎訊息
@bot.event
async def on_member_join(member):
"""當新成員加入伺服器時"""
await member.send(f'👋 歡迎加入 {member.guild.name}')
print(f'✨ 新成員加入: {member.name}')
# 錯誤處理
@bot.event
async def on_command_error(ctx, error):
"""處理指令錯誤"""
if isinstance(error, commands.CommandNotFound):
await ctx.send('❌ 請輸入正確的指令!使用 `!help` 查看所有指令。')
else:
print(f'❌ 發生錯誤: {error}')
# 啟動機器人
if __name__ == '__main__':
if not TOKEN:
print('❌ 錯誤:未找到 DISCORD_BOT_TOKEN')
print('請確保 .env 檔案已正確設定!')
else:
bot.run(TOKEN)