Discord-бот не регистрирует команды
Бот не регистрирует команды. При запуске бота ошибок не наблюдается, но при этом слеш команда не появляется на сервере (мне нужно чтобы бот работал на многих серверах, а не на одном, и по этому писать id сервера не хочу)
import discord
import requests
import api
from discord.ext import tasks, commands
from discord import app_commands
from discord.utils import get
token=api.ip
intents = discord.Intents.all()
bot = commands.Bot(
command_prefix='/',
sync_commands_debug=True,
sync_commands=True,
activity=discord.Activity(type=discord.ActivityType.playing, name="В разработке"),
intents=discord.Intents.all())
@bot.event
async def on_ready():
print(f'Bot Name: {bot.user}')
try:
synced = await bot.tree.sync()
print(f'Добавленно {len(synced)} команд')
except Exception as e:
print(e)
##########################################
# /kick - выгнать пользователя с сервера #
##########################################
@bot.tree.command(name="kick",description="Выгнать пользователя с сервера")
@app_commands.describe(name_user= "Имя пользователя" ,cause = "Описание причины кика")
async def kick(interaction:discord.Interaction, name_user: str, cause: str):
await bot.kick(name_user)
await channel.send("""Пользователь: """+name_user+ """ был выгнан с сервера.
Причина: """ +cause)
bot.run(token)```
Ответы (1 шт):
Автор решения: adolf_two
→ Ссылка
Замени @bot.tree на @slash.slash
import discord
from discord.ext import commands
from discord_slash import SlashCommand, SlashContext
import requests
import api
from discord.ext import tasks
from discord import app_commands
from discord.utils import get
token=api.ip
bot = commands.Bot(
command_prefix='/',
sync_commands_debug=True,
sync_commands=True,
activity=discord.Activity(type=discord.ActivityType.playing, name="В разработке"),
intents=discord.Intents.all())
slash = SlashCommand(bot, sync_commands=True) # Используйте discord_slash для регистрации слеш-команд
@bot.event
async def on_ready():
print(f'Bot Name: {bot.user}')
try:
synced = await bot.tree.sync()
print(f'Добавленно {len(synced)} команд')
except Exception as e:
print(e)
##########################################
# /kick - выгнать пользователя с сервера #
##########################################
@slash.slash(name="kick",description="Выгнать пользователя с сервера")
@app_commands.describe(name_user= "Имя пользователя" ,cause = "Описание причины кика")
async def kick(interaction:discord.Interaction, name_user: str, cause: str):
await bot.kick(name_user)
await channel.send("""Пользователь: """+name_user+ """ был выгнан с сервера.
Причина: """ +cause)
bot.run(token)```
Убедитесь, что переменная
api.ipсодержит ваш токен. И не забудь строчку -
slash = SlashCommand(bot, sync_commands=True)