nextcord スラッシュコマンドの同期。
解決したいこと
nextcord スラッシュコマンドの同期などについての問題
例)
Pythonでnextcordを使用したディスコードBOTを開発しているのですが、
スラッシュコマンドの同期?がうまくいかないようです。
解決方法を教えて下さい。
環境
windows 11
Python 3.13.1
nextcord 3.0.1
発生している問題
# main.py
# ~~~~~~~~
# ボットのインテントを設定
intents = nextcord.Intents.default()
intents.guilds = True
intents.members = True
intents.messages = True
intents.message_content = True
bot = commands.Bot(command_prefix="/", intents=intents)
# ~~~~~~~~
# Cogの定義したファイルの読み込み
async def load_cogs():
for filename in os.listdir("./cogs"):
if filename.endswith(".py") and not filename.startswith("__"):
try:
bot.load_extension(f"cogs.{filename[:-3]}")
print(f"Loaded cog: {filename}")
except Exception as e:
print(f"Failed to load cog {filename}: {e}")
# ~~~~~~~~
# ボットの起動イベント
@bot.event
async def on_ready():
print(f"{bot.user} でログインしました")
true_guild = None
for guild in bot.guilds:
if guild.id != SERVER_ID:
await guild.leave()
print(f"{guild.name} サーバーから退出しました。")
else:
true_guild = guild
if true_guild is None:
return
print(f"{true_guild.name} を制御します。")
await load_cogs()
# cogs/sample.py
import nextcord
from nextcord.ext import commands
# コグの設定
class Fun(commands.Cog):
def __init__(self, bot):
self.bot = bot
# ボットに挨拶を返させるコマンド
@nextcord.slash_command(name="hello", description="nasi")
async def hello(self, ctx):
await ctx.send(f"こんにちは、{ctx.author.name}さん!")
# 軽い情報表示のコマンド
@nextcord.slash_command(name='ping', description="nasi")
async def ping(self, ctx):
await ctx.send(f'Pong! ラグは {round(self.bot.latency * 1000)}ms')
# コグの追加
def setup(bot):
bot.add_cog(Fun(bot))
問題1
- BOTをディスコードのサーバーに追加
- プログラム実行
- スラッシュコマンドが反映された
- プログラム終了
- 新たなスラッシュコマンドの追加
- プログラム実行
- 新たなスラッシュコマンドが反映されない
- BOTをサーバーから退会
- 再度「1」からくりかえしになる
問題2
時間経過で設定したスラッシュコマンドが「不明な連携」となり実行できなくなる。
nextcordの記事が少なくて調べてもわかりませんでした。
(私が調べるの下手なだけかもしれませんが...)
可能性のありそうな記事でもいいので、わかる方がいましたら教えて下さい。
0