edit 使用 .env 方式修改頻道ID

This commit is contained in:
tangsong 2026-03-03 23:52:33 +08:00
parent 3b948c5fda
commit 029fee16ea
2 changed files with 19 additions and 8 deletions

View File

@ -5,3 +5,7 @@ DISCORD_BOT_TOKEN=your_bot_token_here
# Discord Application ID (可選) # Discord Application ID (可選)
# 用於 Slash Commands # 用於 Slash Commands
DISCORD_APPLICATION_ID=your_application_id_here DISCORD_APPLICATION_ID=your_application_id_here
# Discord Guild ID (可選)
# 用於限制 Slash Commands 只在特定伺服器可用
GUILD_ID=your_guild_id_here

View File

@ -1,12 +1,19 @@
import os
import discord import discord
import random import random
import json import json
import asyncio import asyncio
import datetime import datetime
from dotenv import load_dotenv
from discord.ext import commands from discord.ext import commands
from discord import app_commands from discord import app_commands
from discord import FFmpegPCMAudio from discord import FFmpegPCMAudio
# 載入 .env 檔案
load_dotenv()
# 從環境變數讀取 Guild ID 並轉型為 int
MY_GUILD_ID = int(os.getenv('GUILD_ID'))
class Lottery(commands.Cog): class Lottery(commands.Cog):
def __init__(self, bot): def __init__(self, bot):
self.bot = bot self.bot = bot
@ -22,7 +29,7 @@ class Lottery(commands.Cog):
self.stop = False self.stop = False
# --- 建立抽選清單 --- # --- 建立抽選清單 ---
@app_commands.guilds(discord.Object(id=605678541530726421)) @app_commands.guilds(discord.Object(id=MY_GUILD_ID))
@app_commands.command(name="建立抽選清單", description="建立寶可夢或動畫角色的抽選清單") @app_commands.command(name="建立抽選清單", description="建立寶可夢或動畫角色的抽選清單")
@app_commands.choices(list_name=[ @app_commands.choices(list_name=[
app_commands.Choice(name="寶可夢", value="寶可夢"), app_commands.Choice(name="寶可夢", value="寶可夢"),
@ -48,7 +55,7 @@ class Lottery(commands.Cog):
await interaction.response.send_message(msg, ephemeral=True) await interaction.response.send_message(msg, ephemeral=True)
# --- 顯示清單狀態 --- # --- 顯示清單狀態 ---
@app_commands.guilds(discord.Object(id=605678541530726421)) @app_commands.guilds(discord.Object(id=MY_GUILD_ID))
@app_commands.command(name="抽選清單", description="檢視所有抽選清單及目前抽選狀態") @app_commands.command(name="抽選清單", description="檢視所有抽選清單及目前抽選狀態")
async def show_list(self, interaction: discord.Interaction): async def show_list(self, interaction: discord.Interaction):
pokeCount = self.getPokeCount + 1 pokeCount = self.getPokeCount + 1
@ -59,7 +66,7 @@ class Lottery(commands.Cog):
) )
# --- 抽寶可夢 --- # --- 抽寶可夢 ---
@app_commands.guilds(discord.Object(id=605678541530726421)) @app_commands.guilds(discord.Object(id=MY_GUILD_ID))
@app_commands.command(name="抽寶可夢", description="顯示題目,並於指定秒數後公布答案圖片") @app_commands.command(name="抽寶可夢", description="顯示題目,並於指定秒數後公布答案圖片")
@app_commands.describe(t="倒數秒數需大於5") @app_commands.describe(t="倒數秒數需大於5")
async def get_poke(self, interaction: discord.Interaction, t: int): async def get_poke(self, interaction: discord.Interaction, t: int):
@ -97,7 +104,7 @@ class Lottery(commands.Cog):
await interaction.response.send_message("請先加入語音頻道", ephemeral=True) await interaction.response.send_message("請先加入語音頻道", ephemeral=True)
# --- 抽動畫角色 --- # --- 抽動畫角色 ---
@app_commands.guilds(discord.Object(id=605678541530726421)) @app_commands.guilds(discord.Object(id=MY_GUILD_ID))
@app_commands.command(name="抽動畫角色", description="顯示題目,並於指定秒數後公布答案圖片") @app_commands.command(name="抽動畫角色", description="顯示題目,並於指定秒數後公布答案圖片")
@app_commands.describe(t="倒數秒數需大於5") @app_commands.describe(t="倒數秒數需大於5")
async def get_ani(self, interaction: discord.Interaction, t: int): async def get_ani(self, interaction: discord.Interaction, t: int):
@ -135,7 +142,7 @@ class Lottery(commands.Cog):
await interaction.response.send_message("請先加入語音頻道", ephemeral=True) await interaction.response.send_message("請先加入語音頻道", ephemeral=True)
# --- 新增:動畫角色單一複習 --- # --- 新增:動畫角色單一複習 ---
@app_commands.guilds(discord.Object(id=605678541530726421)) @app_commands.guilds(discord.Object(id=MY_GUILD_ID))
@app_commands.command(name="動畫角色複習", description="顯示指定編號的角色") @app_commands.command(name="動畫角色複習", description="顯示指定編號的角色")
@app_commands.describe(num="想要查看的角色編號 (從 1 開始)") @app_commands.describe(num="想要查看的角色編號 (從 1 開始)")
async def check_ani(self, interaction: discord.Interaction, num: int = 1): async def check_ani(self, interaction: discord.Interaction, num: int = 1):
@ -151,7 +158,7 @@ class Lottery(commands.Cog):
await interaction.response.send_message(embed=embed) await interaction.response.send_message(embed=embed)
# --- 新增:動畫角色總複習 --- # --- 新增:動畫角色總複習 ---
@app_commands.guilds(discord.Object(id=605678541530726421)) @app_commands.guilds(discord.Object(id=MY_GUILD_ID))
@app_commands.command(name="動畫角色總複習", description="每 2 秒顯示一位動畫角色,直到結束") @app_commands.command(name="動畫角色總複習", description="每 2 秒顯示一位動畫角色,直到結束")
async def check_all_ani(self, interaction: discord.Interaction): async def check_all_ani(self, interaction: discord.Interaction):
self.stop = False self.stop = False
@ -177,7 +184,7 @@ class Lottery(commands.Cog):
await interaction.followup.send("複習完畢!") await interaction.followup.send("複習完畢!")
# --- 停止複習 --- # --- 停止複習 ---
@app_commands.guilds(discord.Object(id=605678541530726421)) @app_commands.guilds(discord.Object(id=MY_GUILD_ID))
@app_commands.command(name="停止", description="停止顯示總複習清單") @app_commands.command(name="停止", description="停止顯示總複習清單")
async def stop_check_all_ani(self, interaction: discord.Interaction): async def stop_check_all_ani(self, interaction: discord.Interaction):
self.stop = True self.stop = True