Значок "Поддерживает команды" в дискорд боте, используя discord.py

Рейтинг: 1Ответов: 3Опубликовано: 29.05.2023

Сегодня увидел у ботов значки "Поддерживает команды", и захотел себе такой же. Я добавляю команды, но по-прежнему значок не выдается. Использую discord.pyвведите сюда описание изображения

import discord
from discord import app_commands
from discord.ext import commands

class PersistentViewBot(commands.Bot):
    def __init__(self):
        super().__init__(command_prefix='!', intents=discord.Intents.all())
    async def setup_hook(self):
        await bot.tree.sync(guild=discord.Object(id=guild_id))

guild_id = 123456

bot = PersistentViewBot()

# Обработчик события подключения к Discord
@bot.hybrid_command(name='embed', description="Выводит embed сообщение", with_app_command=True)
@app_commands.guilds(discord.Object(id=guild_id))
async def embed(ctx, description:str):
    embed = discord.Embed(description=description,color=0x2f3136)
    await ctx.channel.send(embed=embed)
bot.run()

Ответы

▲ 1

Это вроде как могут получить лишь верифицированные боты (те, которые есть на 100+ серверах).

▲ 0

Используйте

@bot.command()
async def command(ctx):
  await ctx.message.delete()
  await ctx.send('Я робот')

Несколько раз введите /command значок появится

▲ 0

Создай бота с таким кодом:

import discord
from discord.ext import commands

intents = discord.Intents.default()  # Используй нужные интенты
bot = commands.Bot(command_prefix="/", intents=intents)

@bot.slash_command(description='Получаем значок для бота')
async def command(ctx):
    await ctx.send('Я робот')

bot.run('YOUR_TOKEN')

После чего перейди на портал разработчиков, мои апликации и выбери нужного бота. Нажми на OAuth2 - general. В самом низу будет строка "Default Authorization Link", в ней выбери "In-app Authorization". В scopes выбери bot и applications.commands. В bot permissions отметь Administrator (см. скрин)

или сделай всё как на картинке

После этого пригласи бота на новый сервер через кнопку в его профиле и на новом сервере пару раз пропиши /command

как на картинке

Значок должен выдастся автоматически.