February 23, 2023

Создание дискорд бота. Часть 3. Команды.

Вы дождались 3 части моей статьи, я вас с этим поздравляю. Если вкратце, мы научимся создавать слеш команды и префиксные.

Рекомендую отказаться от префиксных команд если ваш бот публичный, и вы хотите получить верификацию. После верификации вам вряд ли дадут доступ к Message Intent, который обязателен для префиксных команд.

Итак, начнем с слеш команд.

Ещё одно предупреждение, не используйте commands Context в слеш командах.

commands Context - для префиксных команд.

Interaction - для слеш команд.

import disnake
from disnake.ext import commands

# Создание переменной bot и присваивание ей екземпляр класса commands.Bot
bot = commands.Bot(command_prefix=".", intents=disnake.Intents.all()) # Все Intents должны быть включены для работы.

# Ивент который запустится когда бот будет готов
# ЭТОТ ИВЕНТ МОЖЕТ ЗАПУСКАТЬСЯ НЕСКОЛЬКО РАЗ, НЕ ДЕЛАЙТЕ ЗДЕСЬ АПИ ЗАПРОСЫ
@bot.event
async def on_ready():
    print("Bot's ready!")
 
# Создание команды  
@bot.slash_command(name='its-my-test-command')
async def its_my_test_command(inter: disnake.ApplicationCommandInteraction):
    # Ответ на интеракцию. Отправка ephemeral (невидимого) сообщения Test!
    await inter.response.send_message('Test!', ephemeral=True) 
    
bot.run('YOUR_BOT_TOKEN')

Теперь префиксные команды.

import disnake
from disnake.ext import commands

# Создание переменной bot и присваивание ей екземпляр класса commands.Bot
bot = commands.Bot(command_prefix=".", intents=disnake.Intents.all()) # Все Intents должны быть включены для работы.

# Ивент который запустится когда бот будет готов
# ЭТОТ ИВЕНТ МОЖЕТ ЗАПУСКАТЬСЯ НЕСКОЛЬКО РАЗ, НЕ ДЕЛАЙТЕ ЗДЕСЬ АПИ ЗАПРОСЫ
@bot.event
async def on_ready():
    print("Bot's ready!")
 
# Создание команды  
@bot.command(name='its-my-test-command')
async def its_my_test_command(ctx: commands.Context):
    await ctx.send('Test!') 
    
bot.run('YOUR_BOT_TOKEN')

На этом всё!