実現したいこと
gemini apiとdiscord.pyを使って、discordでボットにスラッシュコマンドで質問するとgeminiの答えをボット側から返答さるようにさせたいです。
発生している問題・分からないこと
/qというスラッシュコマンドを入力するとボットが反応してくれるはずが、何も反応してくれません。
そもそもdiscord側から/qコマンドが認識されていないようで、"/q"と入力欄に書いても、そもそも候補に/qコマンドが出てくれません。
ボット側のOAuth2の、Scopesには、bot、applications.commandsを、
Bot Permissionsはsend messages、view channels、read message historyを有効化していますが、
ボットが参加しているサーバーの設定内の連帯サービス、参加しているボットの項目から、”このアプリケーションにはコマンドがありません。”と表示されてしまいます。
botとコードは連携できていて、ボットはオンライン状態になっているのですが…
エラーメッセージ
error
12025-05-10 21:04:39 INFO discord.client logging in using static token 22025-05-10 21:04:41 INFO discord.gateway Shard ID None has connected to Gateway (Session ID: 見せられません). 3特にエラーは起きていません。
該当のソースコード
python3
1import discord 2from discord import app_commands 3from google import genai 4import os 5from dotenv import load_dotenv 6 7load_dotenv(dotenv_path=rf"※ファイルの場所です。", verbose=True) 8 9DISCORD_BOT_TOKEN = os.getenv("DISCORD_BOT_TOKEN") 10GEMINI_API_KEY = os.getenv("GEMINI_API_KEY") 11DISCORD_GUILD_ID = os.getenv("DISCORD_GUILD_ID") 12 13genai_client = genai.Client(api_key=GEMINI_API_KEY) 14 15# Discordボットのセットアップ 16intents = discord.Intents.default() 17bot = discord.Client(intents=intents) 18tree = app_commands.CommandTree(bot) 19 20# スラッシュコマンドの定義 21@tree.command(name="q", description="botに質問する") 22async def ask_gemini(interaction: discord.Interaction, query: str): 23 try: 24 response = genai_client.models.generate_content(model="gemini-pro", contents=query) 25 answer = response.text 26 await interaction.response.send_message(answer) 27 except Exception as e: 28 await interaction.response.send_message(f"エラーが発生しました: {str(e)}") 29 30bot.run(DISCORD_BOT_TOKEN)
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
grokなどに聞きながら治そうとしているのですがダメです。
補足
DISCORD_BOT_TOKEN、GEMINI_API_KEY、DISCORD_GUILD_ID は別のenvファイルに保存してあります。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2025/05/11 10:41