Содержание:
В статье мы расскажем о том, как создается приложение для бота, выполняется первая авторизация на сервере и пишется общий код для нормализации работы. Имея «каркас», вы уже можете добавлять пользовательские команды и сразу проверять, как они работают.
Создание приложения и авторизация бота
Далее речь пойдет о двух разных методах создания бота — при помощи JavaScript и Python. Каждый из них имеет свои особенности и нюансы, но вот метод создания приложения и авторизации бота на сервере остается одинаков, поскольку не зависит от выбранного языка программирования. После этого вы сможете перейти к подбору библиотеки и работе с кодом.
Перейти на Discord Developer Portal
- Перейдите по ссылке выше, чтобы оказаться на главной странице портала для разработчиков в Discord. Используйте личные авторизационные данные для входа в аккаунт.
- Создайте новое приложение, нажав кнопку «New Application».
- Введите имя приложения и подтвердите его создание.
- Разверните меню сайта, щелкнув по кнопке с тремя горизонтальными линиями.
- Из появившегося списка выберите раздел настроек «Bot».
- Приступите к добавлению нового бота для данного приложения.
- Подтвердите отобразившееся уведомление, нажав «Yes, do it».
- По завершении сайт обновится и откроется страница бота, где вы можете изменить его название, скопировать токен или добавить иконку, которая будет отображаться и в Дискорде.
- Однако сейчас бот еще не отмечен таковым и для него не установлены разрешения, поэтому через то же самое меню перейдите в раздел «OAuth2».
- В списке «Scopes» отметьте галочкой «bot», обозначив тип созданного приложения.
- Найдите следующий блок — «Bot Permissions» и установите галочки напротив всех разрешений, которые вы хотите предоставить создаваемому боту.
- То же самое сделайте и с остальными типами разрешений, они соответствуют доступным непосредственно в Discord для ролей.
- Теперь бот готов для авторизации. На этой же странице найдите строку со ссылкой и скопируйте ее.
- Вставьте в адресную строку и перейдите по ней. В появившейся форме выберите сервер для авторизации. Если у вас еще нет собственного сервера, создайте его, а затем вернитесь к процессу подключения бота.
Подробнее: Создание сервера в Discord
- Ознакомьтесь со списком всех разрешений и нажмите на «Авторизовать».
- Осталось только подтвердить появившуюся на экране капчу.
- Откройте соответствующий сервер в Discord и убедитесь в том, что бот находится в списке участников. Пока что он еще офлайн, а запуск станет доступен после написания «тела» бота при помощи Python или JS, чем мы и займемся далее.
Выбор среды разработки
Перед началом работы с кодом в упомянутых языках программирования уточним, что вам понадобится установить текстовый редактор или специальную среду разработки, поддерживающую синтаксис Python или JavaScript (в зависимости от выбранного). Конечно, можно использовать просто «Блокнот», но по удобству он уступает специализированным программам.
Подробнее:
Выбор среды разработки для программирования
Вариант 1: Python и библиотека discord
Если ранее вы не сталкивались с языками программирования или знакомы с ними только поверхностно, создание бота для Discord на Python — лучший выбор. Этот ЯП проще учится, компактный и имеет логически понятный синтаксис, поэтому идеально подходит новичкам. К тому же в сети есть огромное количество исходников с различными командами или уже готовыми ботами, которые ничего не мешает скопировать и использовать в своих целях. В следующих шагах вы узнаете, как создать «каркас» бота на Python и запустить его, чтобы проверить работу.
Шаг 1: Установка Python и библиотеки discord
По умолчанию в Windows нет встроенных функций и утилит, предназначенных для работы с Питоном, поэтому их придется установить отдельно, не забыв про подключаемую библиотеку discord, которая позволит взаимодействовать с полезными функциями и командами, связанными исключительно с Дискордом.
Перейти на официальный сайт Python
- Воспользуйтесь ссылкой выше, чтобы перейти на официальный сайт Python и нажмите кнопку для загрузки его последней версии.
- На новой странице отыщите инсталлятор для Windows и начните его загрузку.
- Дождитесь завершения скачивания и запустите установщик.
- Можно запустить установку без изменений, но обязательно отметьте галочкой «Add Python X.X to PATH», чтобы все переменные среды добавились автоматически и не возникло проблем при дальнейшем вводе команд.
- Ожидайте завершения установки и на всякий случай перезагрузите компьютер, чтобы все изменения вступили в силу.
- Откройте «Командную строку» удобным для вас способом, например, отыскав приложение в меню «Пуск».
- Напишите команду
pip install discord
и подтвердите ее нажатием клавиши Enter. - Начнется загрузка файлов и в консоли «побегут» строки. Не закрывайте данное окно до завершения скачивания.
- Как только появилась информация «Successfully installed», закрывайте «Командную строку» и переходите далее.
Если Python у вас установлен, но команда для добавления подключаемой библиотеки не работает, выполните обновление компонента PIP, о чем рассказывается в другой статье на нашем сайте. Там же вы найдете инструкцию и по изменению переменных среды, если этого не произошло во время установки.
Подробнее: Обновление PIP для Python
Шаг 2: Создание словаря бота
В этом варианте мы будем использовать словарь для бота, то есть конфигурационный файл, хранящий в разных именах значения токена, префикса и имени бота. Это существенно упрощает весь процесс написания кода и не заставляет каждый раз вспоминать данные приложения, чтобы ввести их в одной строке.
- Начните с запуска IDLE, отыскав добавленное приложение через меню «Пуск». Если вы скачали другую среду разработки, откройте ее и создайте новый проект на базе Python.
- После открытия нового окна вызовите меню «File» и выберите пункт «New File». Сделать это можно и при помощи комбинации клавиш Ctrl + N.
- В новом окне, которое и предназначено для написания кода, вставьте блок
settings = {
'token': 'Ваш токен',
'bot': 'Имя бота',
'id': Client ID бота, без кавычек,
'prefix': 'Префикс бота'
} - Теперь понадобится отыскать информацию для ее замены в словаре. Сначала найдите Client ID приложения на сайте разработчиков. Скопируйте его и замените в соответствующую строку.
- Вызовите меню и перейдите в раздел «Bot».
- Скопируйте его уникальный токен, щелкнув по специально отведенной для этого кнопке.
- Вставьте токен вместо надписи, сделайте то же самое с именем бота и используемым префиксом (префикс нужен для вызова команд и всегда идет перед ними, например
!play
, а вы можете заменить восклицательный знак на любые другие символы). - Как только вся информация была заменена, снова вызовите меню «File» и выберите вариант «Save As».
- Создайте отдельную папку для файлов бота, назовите этот как
config
и подтвердите сохранение.
Шаг 3: Создание тела бота
Для обеспечения базового функционирования бота ему нужно создать «тело» — основной код для запуска и работы на сервере. Понадобится отдельный файл, который можно назвать как угодно, но обязательно сохранить его в том же месте, где находится созданный ранее словарь.
- В среде разработки откройте меню «File» и создайте новый файл.
- Вставьте туда три команды, которые предназначены для импорта установленных библиотек и созданного ранее файла:
import discord
from discord.ext import commands
from config import settings - Добавьте строку
bot = commands.Bot(command_prefix = settings['prefix']) # Так как мы указали префикс в settings, обращаемся к словарю с ключом prefix
. - Основной код таков:
@bot.command() # Не передаём аргумент pass_context, так как он был нужен в старых версиях.
async def hello(ctx): # Создаём функцию и передаём аргумент ctx.
author = ctx.message.author # Объявляем переменную author и записываем туда информацию об авторе.await ctx.send(f'Hello, {author.mention}!') # Выводим сообщение с упоминанием автора, обращаясь к переменной author.
- Обращайте внимание на комментарии, идущие после знака «#» — они позволят разобраться с предназначением каждой строки.
- Команда для запуска выглядит так:
bot.run(settings['token']) # Обращаемся к словарю settings с ключом token, для получения токена
. - По завершении снова откройте уже знакомое меню и перейдите к сохранению файла.
- Задайте для него любое название и поместите в папку с конфигом.
Далее вы видите полный код, о котором шла речь выше, поэтому при надобности просто можете скопировать его.
import discord
from discord.ext import commands
from config import settings
bot = commands.Bot(command_prefix = settings['prefix'])
@bot.command() # Не передаём аргумент pass_context, так как он был нужен в старых версиях.
async def hello(ctx): # Создаём функцию и передаём аргумент ctx.
author = ctx.message.author # Объявляем переменную author и записываем туда информацию об авторе.
await ctx.send(f'Hello, {author.mention}!') # Выводим сообщение с упоминанием автора, обращаясь к переменной author.
bot.run(settings['token']) # Обращаемся к словарю settings с ключом token, для получения токена
Дополнительно уточним, что вы можете использовать альтернативную схему, избавившись от файла со словарем и получив немного другое «тело» для бота. Решите, подходит ли вам этот код больше. Указанные строки с токеном нужно будет отредактировать под себя.
import discord
from discord.ext import commands
TOKEN = 'Ваш токен'
bot = commands.Bot(command_prefix='!')
@bot.command(pass_context=True) # разрешаем передавать аргументы
async def test(ctx, arg): # создаем асинхронную функцию бота
await ctx.send(arg) # отправляем обратно аргумент
bot.run(TOKEN)
Шаг 4: Запуск бота
Теперь можно запустить бота для проверки, для чего понадобится созданный в Шаге 3 основной файл. Скомпилируйте его прямо через среду разработки или вызовите «Командную строку» и введите там python bot.py
, где bot.py — название созданного файла. Если файл найти не удалось, укажите его полный путь, например python C:\Users\USER_NAME\bot.py
.
Перейдите в Дискорд и проверьте текущее состояние бота. Он должен отображаться в списке участников в разделе «В сети» вместе с зеленой точкой.
Воспользуйтесь открытыми источниками или собственными знаниями, чтобы написать команды для бота или реализовать другие задачи, которые он должен выполнять. Для этого редактируйте его основной файл или создавайте другие, связывая все в единый проект.
Вариант 2: JavaScript и discord.js
Следующий вариант создания бота для Discord — использование JS и подключаемой библиотеки discord.js, которая добавляет все необходимые компоненты для работы с ботами. Принцип действий отличается от предыдущего варианта лишь инструментами и разницей в синтаксисах языков программирования, но остается примерно таким же.
Шаг 1: Установка Node.js и discord.js
Расширить функциональность JS и превратить его в язык программирования общего назначения поможет платформа Node.js, установкой которой и рекомендуем заняться в первую очередь. Для этого выполните простейший алгоритм действий:
Перейти на официальный сайт Node.js
- Откройте страницу Node.js в интернете и выберите последнюю рекомендованную версию для скачивания.
- Дождитесь получения исполняемого файла и запустите его.
- Следуйте появившимся на экране инструкциям, завершите установку и перезагрузите компьютер.
- Раскройте «Пуск» и через поиск отыщите классическое приложение «Командная строка».
- В ней напишите команду
npm init
и активируйте ее нажатием Enter. - Создайте стандартный пакет с пользовательской информацией, нажимая Enter после ввода каждого параметра, или оставьте все по умолчанию.
- Когда все параметры пакета окажутся заданы, вы получите предупреждение, которое нужно подтвердить, снова нажав Enter.
- Введите команду
npm install
для установки недостающих стандартных компонентов. - Дождитесь завершения их загрузки и появления строки ввода.
- Напишите
npm install discord.js
. - Как только и эта команда выполнена, откройте папку своего пользователя и убедитесь в наличии созданных файлов пакета формата JSON.
Шаг 2: Работа с файлами бота
Все действия, связанные с файлами бота и программным кодом, рассмотрим в рамках одного этапа, поскольку делить их на несколько просто не имеет смысла. Вам понадобятся три основных файла, куда и вписываются все необходимые функции: один отвечает за конфигурацию бота, второй — за «тело», а третий хранит список добавленных команд.
- Для начала создайте файлы «bot.js» и «config.json» в одном каталоге.
- Откройте через текстовый редактор или среду разработки «config.json» и добавьте туда такие строки:
{
"token" : "Ваш_токен",
"prefix" : "Ваш_префикс"
}Соответственно, выражения в двойных кавычках замените на уникальный токен бота и предпочитаемый префикс.
- Откройте для редактирования файл «bot.js» (кстати, его название может быть любым). Вставьте туда данный блок кода.
const Discord = require('discord.js'); // Подключаем библиотеку discord.js
const robot = new Discord.Client(); // Объявляем, что robot - бот
const comms = require("./comms.js"); // Подключаем файл с командами для бота
const fs = require('fs'); // Подключаем родной модуль файловой системы node.js
let config = require('./config.json'); // Подключаем файл с параметрами и информацией
let token = config.token; // «Вытаскиваем» из него токен
let prefix = config.prefix; // «Вытаскиваем» из него префиксrobot.on("ready", function() {
/* При успешном запуске, в консоли появится сообщение «[Имя бота] запустился!» */
console.log(robot.user.username + " запустился!");
});robot.on('message', (msg) => { // Реагирование на сообщения
if (msg.author.username != robot.user.username && msg.author.discriminator != robot.user.discriminator) {
var comm = msg.content.trim() + " ";
var comm_name = comm.slice(0, comm.indexOf(" "));
var messArr = comm.split(" ");
for (comm_count in comms.comms) {
var comm2 = prefix + comms.comms[comm_count].name;
if (comm2 == comm_name) {
comms.comms[comm_count].out(robot, msg, messArr);
}
}
}
});robot.login(token); // Авторизация бота
Читайте комментарии к строчкам, идущие после слэшей («//»), чтобы самостоятельно разобраться с предназначением каждой.
- Создайте третий файл — «comms.js», в котором в будущем будут храниться все необходимые команды.
- В него вставьте основной блок, который в будущем будет расширяться:
const config = require('./config.json'); // Подключаем файл с параметрами и информацией
const Discord = require('discord.js'); // Подключаем библиотеку discord.js
const prefix = config.prefix; // «Вытаскиваем» префикс// Команды //
function test(robot, mess, args) {
mess.channel.send('Test!')
}// Список команд //
var comms_list = [{
name: "test",
out: test,
about: "Тестовая команда"
}];// Name - название команды, на которую будет реагировать бот
// Out - название функции с командой
// About - описание командыmodule.exports.comms = comms_list;
Для дальнейшей работы с командами достаточно будет объявить их функции и пополнить список соответствующими блоками кода. На примере готовый файл «comms.js» выглядит так:
const config = require('./config.json');
const Discord = require('discord.js');
const prefix = config.prefix;
const versions = config.versions;
// Команды //
function test(robot, mess, args) {
mess.channel.send("Тест!")
}
function hello(robot, mess, args) {
mess.reply("Привет!")
}
// Список команд //
var comms_list = [{
name: "test",
out: test,
about: "Тестовая команда"
},
{
name: "hello",
out: hello,
about: "Команда для приветствия!"
}
}
module.exports.comms = comms_list;
Шаг 3: Запуск бота
Первые действия с ботом на JavaScript завершены, а значит, можно запустить его и проверить работу. Для этого вам понадобится выполнить следующее:
- Откройте меню «Пуск» через поиск отыщите «Командную строку» и запустите ее.
- Введите
node bot.js
, где bot.js — название основного файла с кодом для бота. Если он находится не в вашей домашней папке, указывайте полный путь к файлу или сначала перейдите к расположению, используя командуcd
.
Примеры полезных команд
В завершение этого варианта вкратце расскажем о двух полезных командах, которые могут пригодиться при настройке бота. Их можно использовать в качестве тестовых, когда работа над проектом еще находится на стадии развития. Первая команда — !clear
— удаляет указанное количество сообщений в чате. Ее код выглядит следующим образом:
const arggs = mess.content.split(' ').slice(1); // Все аргументы за именем команды с префиксом
const amount = arggs.join(' '); // Количество сообщений, которые должны быть удалены
if (!amount) return mess.channel.send('Вы не указали, сколько сообщений нужно удалить!'); // Проверка, задан ли параметр количества
if (isNaN(amount)) return mess.channel.send('Это не число!'); // Проверка, является ли числом ввод пользователя
if (amount > 100) return mess.channel.send('Вы не можете удалить 100 сообщений за раз'); // Проверка, является ли ввод пользователя числом больше 100
if (amount {
mess.channel.bulkDelete(messages)
mess.channel.send(`Удалено ${amount} сообщений!`)
})
};
delete_messages(); // Вызов асинхронной функции
Вторая команда предназначена для подбрасывания монетки и запускается путем ввода !heads_or_tails
в чате. Здесь код не такой сложный, поскольку действий мало и бот должен откликнуться всего на один запрос без огромного количества переменных.
mess.channel.send('Монета подбрасывается...')
var random = Math.floor(Math.random() * 4) + 1; // Объявление переменной random - она вычисляет случайное число от 1 до 3
if (random === 1) { // Если вычислено число 1, то выпадает орёл.
mess.channel.send(':full_moon: Орёл!')
} else if (random === 2) { // Если вычислено число 2, то выпадает решка.
mess.channel.send(':new_moon: Решка!')
} else if (random === 3) { // Если вычислено число 3, то монета падает ребром.
mess.channel.send(':last_quarter_moon: Монета упала ребром!')
}
В интернете вы можете найти другие полезные команды, которые хотите включить в своего бота, однако для работы с ними все же понадобятся продвинутые знания в JavaScript или Python, чтобы самостоятельно исправлять ошибки или редактировать код под себя.
Наш Telegram каналТолько полезная информация
Traceback (most recent call last):
File «C:\Users\intel\AppData\Local\Programs\Python\Python311\bot\main.py», line 1, in <module>
import discord
ModuleNotFoundError: No module named ‘discord’
Здравствуйте делаю уже 2 раз и не получаеться
у меня так же
попробуй запустить через cmd
Установи discord.py
в командной строке:
pip install discord
или
pip install discord.py
Здравствуйте.А что делать если пишет что какая-то синтексическая ошибка? (В командной строке)
Здравствуйте, Аноним. Скорее всего, вы имеете в виду синтаксическую, а не «синтексическую» ошибку. Это значит, вы допустили ошибки при вводе кода. Попробуйте именно скопировать данные из статьи, а не вводить команды вручную (или же делайте это очень внимательно, поскольку даже одна опечатка приводит к проблемам с запуском кода). К сожалению, других советов дать не могу. Если вас интересует программирование, лучше начните с самых азов, чтобы потом попробовать создать бота для Discord, имея хотя бы минимальный багаж знаний в этой теме.
Я не могу запустить бота (node) выдает ошибку
хотя все так в коде
такая же фигня
Я сам с этим сталкивался,
Просто в боте найди вот это
Поставь галочки как у меня и попробуй снова
Не работает
Почему когда я пишу: «pip install discord» мне пишут:»»pip» не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.»?
Попробуйте переустановить Python, проверив при этом, устанавливается ли при этом pip, как показано тут: Обновление PIP для Python (Способ 1, шаги 7, 8, 9).
А как вызвать команду?