Команда Discord не отображается, когда бот включенPython

Программы на Python
Ответить
Anonymous
 Команда Discord не отображается, когда бот включен

Сообщение Anonymous »

Я работаю над ботом Discord, используя discord.py==2.7.0a5350+g8f2cb607.

Этот бот развернут на одном сервере и не будет развернут где-либо еще.
Моя функция on_ready() выглядит следующим образом:
@bot.event
async def on_ready():
print(f"Connected as {bot.user}")
guild_id = discord.Object(id=GUILD_ID)
synced = await bot.tree.sync(guild=guild_id)
print(f"{len(synced)} commands synced on server {GUILD_ID}.")

Когда я запускаю его, я получаю следующие журналы:
PS D:\MyBot> py main.py
2025-11-11 19:02:49 INFO discord.client logging in using static token
2025-11-11 19:02:50 INFO discord.gateway Shard ID None has connected to Gateway (Session ID: some_session_id).
Connected as My-Bot#1111
0 commands synced on server My(correct)-Guild-ID

Поскольку этот бот предназначен только для одного сервера, я использую команду .sync с идентификатором сервера, поэтому она не является общей и не должна занимать час для синхронизации новых команд.

Проблема в том, что это не работает, и мои новые команды никогда не отображаются.

Мне приходится менять on_ready() каждый раз, когда я создаю новую команду.
/>Вот пример моих команд:
@bot.tree.command(name='leave', description='Leave vc')
async def leave_call(interaction: discord.Interaction):
vc = discord.utils.get(bot.voice_clients, guild=interaction.guild)
if vc and vc.is_connected():
if isinstance(vc, voice_recv.VoiceRecvClient):
vc.stop_listening()
await vc.disconnect()
await interaction.response.send_message("Disconnected.", ephemeral=True)
else:
await interaction.response.send_message("Not connected.")

Я не совсем понимаю, в чем проблема, я пытался искать здесь, в документе Discord.py, даже с несколькими IA (ChatGPT, Copilot, Perplexity и Mistral), но ничего не нашел.

Я создал другого бота много лет назад, но не помню, как я сделал команды доступными мгновенно.

Проблема решена:

Чтобы все работало нормально, мне просто нужно было установить мой guild_id для моих команд, поэтому они обязательны только для этого сервера:
@bot.tree.command(guild=guild_id, name='leave', description='Leave vc')
async def leave_call(interaction: discord.Interaction):
vc = discord.utils.get(bot.voice_clients, guild=interaction.guild)
if vc and vc.is_connected():
if isinstance(vc, voice_recv.VoiceRecvClient):
vc.stop_listening()
await vc.disconnect()
await interaction.response.send_message("Disconnected.", ephemeral=True)
else:
await interaction.response.send_message("Not connected.")

Теперь он работает мгновенно, и журналы возвращают хорошее значение:
PS D:\MyBot> py main.py
2025-11-11 19:02:49 INFO discord.client logging in using static token
2025-11-11 19:02:50 INFO discord.gateway Shard ID None has connected to Gateway (Session ID: some_session_id).
Connected as My-Bot#1111
7 commands synced on server My(correct)-Guild-ID


Подробнее здесь: https://stackoverflow.com/questions/798 ... -bot-is-up
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»