Преамбула
Вы хотите сделать своего собственного бота для Discord? У вас есть забавная идея для вашего сообщества? Что ж, давайте начнем.
В этом руководстве я буду использовать библиотеку NAFF на языке python.
Я собираюсь пропустить создание бота для Discord на портале разработчиков. Если вы не уверены, посмотрите это руководство.
Окружение
Как и при работе над любым проектом на python, я настоятельно рекомендую вам использовать виртуальные среды при работе над любым проектом. Это означает, что каждый проект не будет влиять ни на что другое в вашей системе. Не волнуйтесь, это не установка полноценной виртуальной машины, а просто небольшое окружение python.
cd "[your bots directory]"
python3 -m venv venv-name
# Linux
source venv/bin/activate
# Windows
venv/Scripts/activate
Вот так просто, теперь вы используете виртуальную среду. Когда вы закончите, просто введите deactivate
. Если вы хотите узнать больше о виртуальных средах, загляните на эту страницу.
Установка
Установить библиотеки python очень просто! Просто введите эту команду, и все готово.
python3 -m pip install naff
Базовый бот
Давайте сначала сделаем что-то очень простое, мы просто хотим подключиться к Discord и сказать, что мы вошли в систему.
import naff
bot = naff.Client()
@naff.listen()
async def on_ready():
print(f"Logged in as {bot.user.username}")
bot.start("your_bot_token_here")
Теперь просто запустите ваш код, и вы увидите, что он вошел в систему!
Команды
Довольно скучно видеть только сообщение о входе в систему, было бы неплохо иметь команды, так что давайте сделаем это сейчас.
Для этого мы добавим команду ping
слэш в код, который мы только что написали.
import naff
bot = naff.Client()
@naff.listen()
async def on_ready():
print(f"Logged in as {bot.user.username}")
@naff.slash_command("ping", description="A ping command", scopes=[some_guild_id])
async def ping(ctx: naff.InteractionContext):
await ctx.send("Pong")
bot.start("your_bot_token_here")
Давайте разберем этот декоратор. @naff.slash_command
сообщает NAFF, что coroutine является командой. Отсюда у вас есть следующие параметры
Name
— первый параметр, это имя команды, здесь это «ping».
Есть еще несколько параметров, с которыми вы можете играть, но их можно оставить для будущего руководства.
Вот и все, теперь у вас есть дискорд-бот с поддержкой NAFF и слэш-командами. Просто запустите бота и введите /ping
в вашей гильдии!