Как написать команды для бота дискорд

Руководство по использованию библиотеки discord-py

Здесь вы можете почитать об основах, которые необходимо понимать, чтобы грамотно работать с библиотекой и не задавать вопросов, касающихся самых базовых вещей


Вероятнее всего у вас уже имеется созданный бот, поэтому инструкция по его созданию будет пропущена (но, возмжно появится позже).

Прежде чем начать…

Прежде чем приступать к работе с ботом, я сразу рекомендую зайти на страницу вашего бота и включить намерения (intents, подробнее). Для этого зайдите в раздел приложений и выберите вашего бота. Затем, слева, на вкладке "Bot"

Бот

Включите параметры PRESENCE INTENT и SERVER MEMBERS INTENT

введите сюда описание изображения

После этого выдайте намерения в коде при инициализации бота

Намерения нужны для работы с некоторыми событиями, объектами пользователей серверов (участник/member) и др. Они вам точно понадобятся, поэтому лучше включить их сразу, чтобы потом не спрашивать, почему вам не удается получить данные о пользователе сервера или чего-либо еще.


Начало работы с ботом и discord-py

Бот, которого вы создали на странице приложений, является аккаунтом дискорда, который по сути является таким же пользовательским аккаунтом, как и ваш, но с атрибутом bot и некоторыми ограничениями. Чтобы бот начал что-то делать, нужно создать его в коде и прописать логику.

Для начала рассмотрим виды ботов, которые предоставляет библиотека:

  • discord.Client — фактически, самый базовый бот, на котором основаны другие. Умеет обрабатывать события по типу получения сообщений on_message(), установки реакции on_raw_reaction_add() и другие.
  • discord.ext.commands.Bot — тот же discord.Client, только умеет находить в сообщениях и обрабатывать отдельные команды, которые начинаются с какого-либо префикса, например !test
  • discord.ext.commands.Cog — про этого бота ничего сказать не могу, так как ни разу не использовал. Насколько мне известно, он нужен в тех случаях, когда вы планируете задать боту кучу разных комманд, событий и организовать все это в один отдельный класс.

В общем-то, выбор бота зависит напрямую от цели использования. Если вам нужен простой бот, который будет читать чат, фильтровать мат и т.п., считывать реакции, выдавать роли при входе нового пользователя и т.д., то вам хватит базового бота discord.Client.

Если помимо того, что я написал выше, вы хотите добавить еще и обработку команд по типу !ban <@User>, !play <Ссылка на видео с YouTube>, !погода и т.п., то использовать надо именно discord.ext.commands.Bot.


Пишем код

Теперь, когда вы определились с ботом можно наконец-то приступить к написанию кода.

Для начала подключим библиотеку.

На данном этапе я настоятельно рекомендую ознакомиться с руководством по использованию документации, так как на эту самую документацию я буду ссылаться очень часто и без ее использования вы вряд ли напишете что-то самостоятельно и будете постоянно спрашивать как реализовать ту или иную функцию.

В случае, если вы хотите использовать discord.ext.commands.Bot, я бы сразу отдельно подключил еще и этот пакет

from discord.ext import commands

Инициализация бота

Теперь создадим объект бота, который будет обрабатывать события и команды:

Из документации видим, что единственным обязательным аргументом при создании экземпляра класса является command_prefix.

Он принимает строку (str), по которой бот будет определять, то что сообщение является командой и обрабатывать его нужно именно как команду.

Помимо этого, выдадим боту намерения (intents), инструкция по настройке которых была в начале.

В качестве префикса команды укажем !, намерения нужно выдавать именно те, которые вы будете использовать, но на первое время можно выдать все, то есть discord.Intents.all()

Если у вас discord.ext.commands.Bot:

bot = commands.Bot(command_prefix='!', intents=discord.Intents.all())

Если у вас discord.Client, то префикс указывать не нужно (класс не принимает такого аргумента):

bot = discord.Client(intents=discord.Intents.all())

Основные обработчики событий

Теперь у нас есть объект bot, для которого нужно написать логику взаимодействия.

В качестве обработчиков событий используются асинхронные (async) функции (def), помеченные декоратором @bot.event, где bot — название объекта вашего бота. Функция должна иметь название, строго как в документации — иначе событие просто не будет обработано.

Если коротко, то все, что делает декоратор @bot.event — это помещает написанную вами функцию в другую функцию из библиотеки discord, которая, в свою очередь, передает вашей функции какие-либо параметры. Поэтому, если не пометить функцию декоратором, discord не обратит на нее внимание и она не будет вызвана.

async def on_ready()

Первым делом, нужно удостовериться, что бот успешно запустился и готов к работе. В списке событий находим событие on_ready(), которое вызывается один раз при запуске кода и обозначает то, что бот загрузился и готов к работе.

Здесь нужно отметить, что в этой функции не следует размещать фрагменты кода, которые должны будут выполняться в дальнейшем, так как функция будет вызвана только один раз.
Поэтому в этой функции можно разместить какое-либо сообщение, о том, что бот запущен и, если есть работа с данными из файлов, то самое время их подгрузить. В общем, выполнить все единоразовые процедуры.

Выглядеть это будет вот так:

@bot.event
async def on_ready():
  # сам по себе объект bot (discord.ext.commands.Bot) не содержит имени бота
  # зато содержит объект пользователя, которым он является
  # а вот объект пользователя уже хранит в себе имя
  print(f'{bot.user.name} запустился и готов к работе!')

async def on_message(message)

Добавим обработчик сообщений, чтобы получать вызов функции каждый раз, когда bot получает сообщение в ЛС или на сервере.

В списке событий находим событие on_message(message), которое принимает обязательный аргумент message. Этот аргумент имеет тип discord.Message из которого вы можете получить текст сообщения, а также объекты автора сообщения, сервер, канал, вложения, реакции, упоминания, ссылку на сообщение и много чего еще

@bot.event
async def on_message(message):
  print(f'Получено сообщение! Текст: {message.content}, Сервер: {message.guild}')

Здесь вы можете прописать любую логику взаимодействия. Хоть даже удалять все только что переданные обработчиком сообщения (главное чтобы у бота были на то права).
Самое главное — задать функции аргумент, который будет принимать объект сообщения. Вы можете назвать его как хотите, например даже так: async def on_message(собщение), главное чтобы он был.

Если аргумент не указать, то при вызове события нового сообщения, discord-py отправит в функцию on_message() аргумент, содержащий объект сообщения, но получит ошибку о том, что указанная функция не принимает аргументов и ничего работать не будет. Это равноценно созданию функции, которая должна считать сумму 2 переданных в виде аргументов числа, но при этом она не принимает их.


Другие события

По аналогии с примерами, приведенными выше, можно создать обработчик любого другого события, предствленного в discord-py. Главное, чтобы совпадало название и принимаемые аргументы.

Примеры других часто используемых событий:

on_raw_reaction_add(payload), on_raw_reaction_remove(payload) — события добавления и удаления реакции с сообщения, соответствено. Из объекта payload вы можете получить сервер, сообщения и прочую инфу

on_member_join(member), on_member_remove(member) — события подключения и выхода участника с сервера, в качестве аргумента принимает объект участника из которого можно получить всю информацию о пользователе.

Остальное вы можете найти в списке событий.


Запуск бота

У вас уже есть объект бота и, вероятно, обработчики событий. Теперь бота нужно запустить.

При помощи токена, который нужно скопировать на странице бота, в разделе приложений вы можете авторизоваться в аккаунте бота.

Для этого у объекта bot нужно вызвать функцию run():

TOKEN = '' # здесь ваш токен
bot.run(TOKEN)

Особенности

Данная строка должна всегда находиться в самом низу кода. После ее выполнения бот будет запущен и весь код, который находится ниже этой строки будет выполнен только после завершения работы бота.

Бот будет выполнять работу до дех пор, пока вы не завершите выполнение кода. Это означает, что если вы закроете консольное окно программы, то бот перестанет работать и обрабатывать какие-либо события.

Чтобы бот работал без вашего участия, его можно поставить на хостинг — тогда он будет постоянно запущен на удаленном сервере, а не на вашем устройстве. Например, можно использовать бесплатный (уже не бесплатный) хостинг Heroku. В интернете есть куча разных туториалов по настройке. Возможно, когда-нибудь здесь появится ссылка на мой :)


В итоге должен получиться примерно такой код, посмотреть который можно здесь.

Данный бот выводит сообщение при успешном запуске, а также подробную информацию о каждом полученном сообщении.

Для этого примера достаточно было бы простого бота discord.Client, так как он обрабатывает только события. Но я наперед прописал в коде бота discord.ext.commands.Bot, так как дальше в этот код мы будем добавлять обработку команд.


Обработка отдельных команд


Данный раздел содержит информацию об устаревших в дискорде prefix-командах (!command / >command / $command и т.п.). На данный момент актуально создавать именно slash-команды (/command), которые интегрируются в дискорд и позволяют более комфортно разделять аргументы и добавлять к ним описание.

Так или иначе, руководство по slash-командам подразумевает знание материала по работе с prefix-командами. Поэтому прежде чем переходить к slash-командам, я рекомендую ознакомиться с материалом ниже.

Почитать про slash-команды можно здесь.


Напоминаю, что для работы с командами, в качестве бота нужно использовать объект discord.ext.commands.Bot, а не discord.Client! Не забудьте также про префикс

  • Команды бота, как и обработчики событий, являются асинхронными функциями (async def).

  • Чтобы discord-py обнаружил команду в коде, функцию нужно пометить декоратором @bot.command(), где bot — название объекта вашего бота.

    Скобки в декораторе @bot.command() обязательны, в отличии от @bot.event, так как декторатор discord.ext.commands.Command() принимает необязательные аргументы. Без скобок декоратор корректно работать не будет. *Подробнее про декораторы можно почитать выше

  • В отличии от обработчиков событий, функцию можно назвать как захочется — название функции станет названием команды.

  • Любая функция, являющаяся командой, должна принимать обязательный аргумент ctx (можно назвать как угодно). Аргумент является контекстом (discord.ext.commands.Context) выполнения команды, из которого можно получить сервер, автора, сообщение, канал и др. информацию. При вызове команды, Контекст в функцию передает библиотека discord-py.

Перед созданием первой команды

Для начала, если у вас в коде есть обработчик событий on_message(), его нужно немного доработать.

Из документации видим, что у объекта пользователя (discord.User) есть свойство bot, имеющее тип bool. Значит, если свойство имеет значение True — пользователь является ботом, иначе — не является)

Допишем условие, чтобы сообщения от любых ботов (включая нашего) игнорировались. Это часто делается для того, чтобы другие боты не могли спамить вызовами команд, обработка которых сначала проходит через on_message(), ведь любая команда в дискорде по сути является просто сообщением.

Для этого, кстати, в on_message() нужно добавить еще одну строку await bot.process_commands(message), которую можно найти в списке методов объекта discord.ext.commands.Bot. Метод принимает в качестве аргумента сообщение с типом discord.Message и нужен для того, чтобы проверять, являестя ли сообщение командой.
Многие, забыв добавить эту строку, потом не понимают, почему их бот игнорирует команды (подробный разбор проблемы)

@bot.event
async def on_message(message):
  if message.author.bot:
    return
  await bot.process_commands(message)

Ключевое слово return завершает выполнение функции, то есть код, который идет дальше, так или иначе не будет выполнен.

Создание первой команды

Создадим команду с названием test, при вызове которой бот будет отвечать в чат «Успешный тест!»:

@bot.command()
async def test(ctx):
  # список свойств и методов контекста можно найти в документации по запросу context
  await ctx.send('Успешный тест!')

Результат:

image

Все работает!

Реализацию такой команды можно было бы сделать через обычного бота discord.Client прямо в on_message(), проверяя, наличие префикса и конкретного названия команды. Однако при большом количестве команд запихивать все в одну функцию не очень хорошо, да и не удобно разделять аргументы, про которые, кстати, можно почитать далее.

*Почитать подробнее, почему не стоит делать команды через on_message() можно здесь

Сложные команды

Несколько названий

Для создания нескольких названий одной команды можно передать в декоратор @bot.command() аргумент aliases, принимающий список (list) или кортеж (tuple) с названиями команды. При этом самого названия функции там быть не должно.

@bot.command(aliases=['test', 'тест', 'тестовая_команда', 'test_command'])
async def test_(ctx):
  pass
Работа с аргументами команды

Предположим, вам нужно при вызове функции принять от пользователя число, значение типа bool и участника сервера discord.Member

image

Чтобы принять эти параматры, нужно указать их в качестве аргументов функции, которая используется в качестве команды:

@bot.command()
async def get_values(ctx, number, boolean, member):
    ...

Поскольку Python — язык с динамической типизацией, по умолчанию все полученные значения принимают строковый тип str, так как фактически были получены из строки (str), содержащей текст сообщения.

Тогда

  • number будет равно '16'
  • boolean будет равно 'True'
  • member будет равно '<@!239863351063144451>'

То есть из number нельзя будет вычесть число, boolean == True примет значение False, а member просто примет строку, содержащую форму упоминания пользователя.

Вместо того, чтобы вручную выполнять приведение типов (number = int(number), boolean = bool(boolean) и т.д.), можно сразу же явно указать тип аргумента функции:

@bot.command()
async def get_values(ctx, number: int, boolean: bool, member: discord.Member):
    ...

И вот теперь уже все будет работать корректно. Помимо discord.Member можно указать любой другой тип библиотеки discord-py.

Из объекта member, например, можно получить id (member.id), ссылку на аватар (member.avatar_url) и другую информацию, которую можно найти в документации по объекту discord.Member.

Получить весь текст как один аргумент

В случае, когда вам в качестве аргумента нужен весь текст команды, можно использовать оператор *:

image

@bot.command()
async def get_text(ctx, *, text):
    ...

text будет иметь тип str и значение 'это тестовый текст для проверки функции'


Если сделать так:

@bot.command()
async def get_text(ctx, *text):
    ...

text будет иметь тип tuple и значение ('это', 'тестовый', 'текст', 'для, 'проверки', 'функции')


Также можно сначала получить несколько отдельных слов, а уже потом оставшийся текст:

@bot.command()
async def get_text(ctx, first_word, second_word, *, other_text):
    ...
  • first_word будет иметь тип str и значение 'это'
  • second_word будет иметь тип str и значение 'тестовый'
  • other_text будет иметь тип str и значение 'текст для проверки функции'

Итог

Если смешать все команды из базового руководства в один код, то должно получиться что-то такое.

Данной информации должно хватить для понимания базовых вещей, таких как работа с документацией, создание prefix-команд, работа с обработчиками событий и т.д.


Другие материалы

  • Slash-команды
  • Фоновые задачи (Tasks)
  • UI-Элементы (Кнопки, выпадающие списки и дилоговые окна)

Пользователи часто спрашивают, как создать бота в Дискорде и тем самым получить программу с необходимыми функциями. Сразу отметим, что достижение такой цели — непростая задача, а реализовать ее можно несколькими способами, к примеру, на основе discord.js, на Python или с помощью программы Discord Bot Maker.

Как создать Дискорд-бота на основе discord.js

На практике API Discord представляет собой удобный инструмент, позволяющий создать, а впоследствии использовать бота. С его помощью легко разработать помощника для решения разных задач, а далее задать необходимый набор команд. Для примера рассмотрим общий алгоритм создания бота для музыки. При правильном подходе он сможет проигрывать, пропускать и останавливать музыкальные файлы. Кроме того, в его функции будет входить поддержка очереди на проигрывание мелодии.

Выполните следующие шаги:

  1. Войдите на сайт discord.com/developers/applications/.

  1. Жмите на кнопку New Application.

  1. Введите название будущего бота Дискорд, к примеру, Music Bot.
  2. Перейдите на вкладку Bot, а после жмите на кнопку Add Bot.


Этих действий достаточно, чтобы создать бота Дискорд, после чего нужно его добавить на сервер с помощью OAuth2 URL-генератора. Сделайте следующие шаги:

  1. Переместитесь в раздел OAuth2 и выберите Bot в панели Scopes.

  1. Укажите необходимые разрешения для проигрывания музыки и чтения.
  2. Копируйте созданный URL и вставьте его в веб-проводник.
  3. Выберите сервер, куда нужно добавить URL.
  4. Жмите на кнопку авторизации (Authorize).


На следующем этапе нужно создать проект с применением терминала. Для этого создайте директорию и перейдите ее с помощью следующих команд — mkdir musicbot && cd musicbot. Далее сделайте следующее:

  1. Создайте модули проекта с применением nmp init.
  2. Ответьте на несколько вопросов, которые необходимы, чтобы создать бота в Дискорд.
  3. Сделайте два файла, где будет вестись работа — touch index.js && touch config.json.
  4. Откройте проект в редакторе, к примеру, с помощью VS Code с применением приказа code.
  5. Установите группу зависимостей, необходимых для дальнейшей работы — npm install discord.js ffmpeg-binaries opusscript ytdl-core –save.
  6. Продолжите создание файла на config.json. На этом этапе сохраните префикс и токен для бота.

{

«prefix»: «!»,

«token»: «your-toke»

}

  1. Войдите на портал создания Дискорд и копируйте токен из раздела Bot (жмите на кнопку Copy).

Теперь нужно создать код javascript. Для этого копируйте следующие зависимости:

const Discord = require(‘discord.js’);

const {

prefix,

token,

} = require(‘./config.json’);

const ytdl = require(‘ytdl-core’);

После этого нужно создать с применением токена клиент и логин.

const client = new Discord.Client();

client.login(token);

Далее добавьте несколько listeners, которые выполняют console.log при пуске.

client.once(‘ready’, () => {

console.log(‘Ready!’);

});

client.once(‘reconnecting’, () => {

console.log(‘Reconnecting!’);

});

client.once(‘disconnect’, () => {

console.log(‘Disconnect!’);

});

После этого начните работать с ботом Дискорд с применением node. Важно, чтобы вновь созданный Discord-бот был онлайн. В консоли появится Ready!. Команда — node index.js.

Задание команд для бота Дискорд

Теперь остается задать необходимые команды.

Для чтения сообщений

Чтобы Дискорд-бот мог читать, напишите функцию.

client.on(‘message’, async message => {

}

Далее сделайте listener для massage-события, получите сообщение и сохраните его в massage. Если информация пришла от бота Дискорд, игнорируйте ее. Выполните проверку с помощью следующей команды.

if (message.author.bot) return;

Если сообщение вернулось, значит, его смог создать бот. Теперь проверьте, с какого префикса оно начинается.

if (!message.content.startsWith(prefix)) return;

Далее проверьте команду, которую нужно активировать. Используйте следующие команды.

if (message.content.startsWith(`${prefix}play`)) {

execute(message, serverQueue);

return;

} else if (message.content.startsWith(`${prefix}skip`)) {

skip(message, serverQueue);

return;

} else if (message.content.startsWith(`${prefix}stop`)) {

stop(message, serverQueue);

return;

} else {

message.channel.send(‘You need to enter a valid command!’)

}

После получения списка команд, которые можно запустить, переходите к их созданию.

Добавление песен

Здесь нужна гильдия, песня и библиотека ytdl (должна быть установлена заранее). Сделайте map с названием очереди, где будут храниться песни.

const queue = new Map();

Теперь создайте async0-функцию с названием execute и убедитесь, находится ли пользователь в чате, и имеется ли необходимое разрешение. При его отсутствии пишете сообщение об ошибке.

async function execute(message, serverQueue) {

const args = message.content.split(‘ ‘);

const voiceChannel = message.member.voiceChannel;

if (!voiceChannel) return message.channel.send(‘You need to be in a voice channel to play music!’);

const permissions =     voiceChannel.permissionsFor(message.client.user);

if (!permissions.has(‘CONNECT’) || !permissions.has(‘SPEAK’)) {

return message.channel.send(‘I need the permissions to join and   speak in your voice channel!’);

}

}

Перейдите к получению данных о песне и сохраните ее в song. Для этого потребуется ytdl-библиотека, получающая данные по ютуб-ссылке.

const songInfo = await ytdl.getInfo(args[1]);

const song = {

title: songInfo.title,

url: songInfo.video_url,

};

Необходимые данные сохраняются в song. Теперь нужно создать контракт, обеспечивающий добавление в очередь. Проверьте факт определения serverQueue (проигрывание музыки), а после отправьте сообщение о достижении результата. Если это не удалось сделать, нужно его создать и соединиться с голосовым каналом и начать играть песню.

if (!serverQueue) {

}else {

serverQueue.songs.push(song);

console.log(serverQueue.songs);

return message.channel.send(`${song.title} has been added to the queue!`);

}

В раздел serverQueue, если он пустой, добавьте трек. В случае, когда serverQueue имеет параметр null, сделайте контракт.

// Creating the contract for our queue

const queueContruct = {

textChannel: message.channel,

voiceChannel: voiceChannel,

connection: null,

songs: [],

volume: 5,

playing: true,

};

// Setting the queue using our contract

queue.set(message.guild.id, queueContruct);

// Pushing the song to our songs array

queueContruct.songs.push(song);

try {

// Here we try to join the voicechat and save our connection into our object.

var connection = await voiceChannel.join();

queueContruct.connection = connection;

// Calling the play function to start a song

play(message.guild, queueContruct.songs[0]);

} catch (err) {

// Printing the error message if the bot fails to join the voicechat

console.log(err);

queue.delete(message.guild.id);

return message.channel.send(err);

}

Проигрывание трека

Теперь нужно создать опцию play для бота Дискорд с параметрами гильдия и песня, а также проверкой объекта song.

function play(guild, song) {

const serverQueue = queue.get(guild.id);

if (!song) {

serverQueue.voiceChannel.leave();

queue.delete(guild.id);

return;

}

}

Если да, нужно уйти с голосового канала и удалить очередь.

Далее трек играет с применением URL и playStream.

const dispatcher = serverQueue.connection.playStream(ytdl(song.url))

.on(‘end’, () => {

console.log(‘Music ended!’);

// Deletes the finished song from the queue

serverQueue.songs.shift();

// Calls the play function again with the next song

play(guild, serverQueue.songs[0]);

})

.on(‘error’, error => {

console.error(error);

});

dispatcher.setVolumeLogarithmic(serverQueue.volume / 5);

Здесь создается stream, а его URL передается адресу песни.

Пропуск трека

Здесь оформите завершение диспетчера, который был сделан в опции play. Такое действие необходимо, чтобы начал играть очередной трек.

function skip(message, serverQueue) {

if (!message.member.voiceChannel) return message.channel.send(‘You have to be in a voice channel to stop the music!’);

if (!serverQueue) return message.channel.send(‘There is no song that I could skip!’);

serverQueue.connection.dispatcher.end();

}

Здесь проверяется, есть ли пользователь в голосовом канале, и имеется ли трек для пропуска.

Остановка

Опция stop подразумевает очистку массива song, удаления очереди и выхода из чата.

function stop(message, serverQueue) {

if (!message.member.voiceChannel) return message.channel.send(‘You have to be in a voice channel to stop the music!’);

serverQueue.songs = [];

serverQueue.connection.dispatcher.end();

}

Полный код бота для Дискорд

const Discord = require(‘discord.js’);

const {

prefix,

token,

} = require(‘./config.json’);

const ytdl = require(‘ytdl-core’);

const client = new Discord.Client();

const queue = new Map();

client.once(‘ready’, () => {

console.log(‘Ready!’);

});

client.once(‘reconnecting’, () => {

console.log(‘Reconnecting!’);

});

client.once(‘disconnect’, () => {

console.log(‘Disconnect!’);

});

client.on(‘message’, async message => {

if (message.author.bot) return;

if (!message.content.startsWith(prefix)) return;

const serverQueue = queue.get(message.guild.id);

if (message.content.startsWith(`${prefix}play`)) {

execute(message, serverQueue);

return;

} else if (message.content.startsWith(`${prefix}skip`)) {

skip(message, serverQueue);

return;

} else if (message.content.startsWith(`${prefix}stop`)) {

stop(message, serverQueue);

return;

} else {

message.channel.send(‘You need to enter a valid command!’)

}

});

async function execute(message, serverQueue) {

const args = message.content.split(‘ ‘);

const voiceChannel = message.member.voiceChannel;

if (!voiceChannel) return message.channel.send(‘You need to be in a voice channel to play music!’);

const permissions = voiceChannel.permissionsFor(message.client.user);

if (!permissions.has(‘CONNECT’) || !permissions.has(‘SPEAK’)) {

return message.channel.send(‘I need the permissions to join and speak in your voice channel!’);

}

const songInfo = await ytdl.getInfo(args[1]);

const song = {

title: songInfo.title,

url: songInfo.video_url,

};

if (!serverQueue) {

const queueContruct = {

textChannel: message.channel,

voiceChannel: voiceChannel,

connection: null,

songs: [],

volume: 5,

playing: true,

};

queue.set(message.guild.id, queueContruct);

queueContruct.songs.push(song);

try {

var connection = await voiceChannel.join();

queueContruct.connection = connection;

play(message.guild, queueContruct.songs[0]);

} catch (err) {

console.log(err);

queue.delete(message.guild.id);

return message.channel.send(err);

}

} else {

serverQueue.songs.push(song);

console.log(serverQueue.songs);

return message.channel.send(`${song.title} has been added to the queue!`);

}

}

function skip(message, serverQueue) {

if (!message.member.voiceChannel) return message.channel.send(‘You have to be in a voice channel to stop the music!’);

if (!serverQueue) return message.channel.send(‘There is no song that I could skip!’);

serverQueue.connection.dispatcher.end();

}

function stop(message, serverQueue) {

if (!message.member.voiceChannel) return message.channel.send(‘You have to be in a voice channel to stop the music!’);

serverQueue.songs = [];

serverQueue.connection.dispatcher.end();

}

function play(guild, song) {

const serverQueue = queue.get(guild.id);

if (!song) {

serverQueue.voiceChannel.leave();

queue.delete(guild.id);

return;

}

const dispatcher = serverQueue.connection.playStream(ytdl(song.url))

.on(‘end’, () => {

console.log(‘Music ended!’);

serverQueue.songs.shift();

play(guild, serverQueue.songs[0]);

})

.on(‘error’, error => {

console.error(error);

});

dispatcher.setVolumeLogarithmic(serverQueue.volume / 5);

}

client.login(token);

Как создать бота в Дискорд на Python

Еще один способ — сделать Дискорд бота на Python. Общий алгоритм действий следующий:

  1. Установите текстовый редактор.
  2. Подготовьте Python 3.4.2+ и Pip3 (менеджер пакетов, необходимый для установки библиотек).
  3. Создайте пустой файл с названием, к примеру, chatbot.py.
  4. Откройте его с помощью текстового редактора и вставьте код. Для его написания необходимо владеть языком Python.
  5. Пример кода — gist.github.com/Tetraquark/911eb07052be10f0bb1323adb4056f86.
  6. Поменяйте значение переменной DISCORD_BOT_TOKEN, где нужно сохранить токен бота. Для получения информации перейдите по ссылке discord.com/developers/applications, выберите нужный бот Дискорд или создайте новый, а после жмите на clich to reveal, где откроется токен приложения. Занести его в переменную DISCORD_BOT_TOKEN.
  7. Сохраните файл и запустите бот Дискорд.

Для выполнения указанной выше работы необходимо обладать определенным набором знаний.

Применение Discord Bot Maker

Как вариант, можно создать бота с помощью Discord Bot Maker. Это мощный инструмент, позволяющий сделать помощника, умеющего отправлять файлы, генерировать и отправлять сообщения, манипулировать эмодзи, редактировать изображения и т. д.

Чтобы создать Дискорд-бота, сделайте следующее:

  1. Скачайте и установите утилиту.
  2. Жмите на кнопку создания бота.
  3. Установите необходимые команды.
  4. Сохраните и запустите bot для Дискорд

Процесс создания интуитивно понятен, поэтому не будем останавливаться на нем подробнее.

Итоги

Теперь вы знаете, как сделать своего бота Discord, и что потребуется для решения задачи. Для этого нужно иметь определенные навыки программирования или, как вариант, использовать Discord Bot Maker. Если у вас нет лишнего времени, лучше скачать готового помощника и пользоваться его возможностями.

Многие пользователи в мире предпочитают общаться в мессенджере Дискорд. Но обычно его возможности ограничены. Расширить функционал позволяют боты. С помощью автоматических помощников выполняют множество стандартных операций. Расскажем, как создать бота для мессенджера и сделать команды.

как сделать команды боту дискорд

Как создать бота в Дискорд, чтобы управлять им при помощи команд

Бот является очень удобным инструментом, который приветствует пользователей, воспроизводит музыку и выполняет другие команды. Для начала создайте бота, следуя алгоритму:

  1. Зайдите на сайт www.discord.com.
  2. Введите данные для входа.
  3. На следующем этапе кликните по кнопке «New Application».
  4. Придумайте имя программе. Нажмите «Create».
  5. В левом верхнем углу нажмите на значок в виде трех горизонтальных полосок.
  6. В появившемся меню найдите пункт «Bot».
  7. Перейдите к созданию бота, нажав «Add Bot».
  8. Подтвердите свои действия.
  9. Бот будет создан. При необходимости измените его имя и добавьте изображение.
  10. После этого снова откройте главное меню и выберите раздел «OAuth2».
  11. Найдите вкладку «Scopes». В представленном списке поставьте галочку рядом с пунктом «bot». Так вы обозначите тип созданной программы.
  12. Далее отметьте галочками те разрешения, которые вы будете предоставлять созданному боту: Administrator, View Audit Log, Manage Roles, Change Nickname и т.д. Их вы найдете в блоке «Bot Permissions».
  13. Аналогичным образом отметьте разрешения в разделах «Text Permissions», «Voice Permissions и т.п.
  14. Ваш бот будет готов к авторизации.
  15. На той же странице скопируйте ссылку.
  16. Вставьте ее в адресную строку браузера.
  17. На открывшейся странице выберите нужный сервер.
  18. Проверьте список прав, которые вы предоставили боту.
  19. Кликните по кнопке авторизации.
  20. Подтвердите, что вы не робот.

как создать бота в дискорд, чтобы управлять им при помощи команд

Как сделать команды боту в Discord: виды команд управления

После успешного создания бота, управляйте им при помощи специальных команд. Среди наиболее популярных:

  • !ban – отправка участника чата в бан. Сначала указывайте самого участника, а потом причину, по которой он оказался в бане;
  • !tempban – блокировка пользователя на определенный период. В первую очередь также указывайте участника, потом срок, а далее – причину бана;
  • !help – появится список основных команд, при помощи которых происходит взаимодействие с ботом;
  • !clear – удаление сообщения;
  • !rank – появится уровень участника чата. С помощью этой команды вы увидите рейтинг человека. Он рассчитывается на основании активности пользователя в чатах и оценки полезности его сообщений;
  • !user-info – получение подробной информации об участнике, его никнейме;
  • !volume – изменение громкости;
  • !infractions – просмотр сведений о количестве нарушений, которые допустил пользователь;
  • /me – выделение текста курсивом;
  • /nick – изменение ника на сервере и т.д.

как сделать команды боту в дискорд: виды команд управления

После набора команды дополнительный параметр при необходимости указывайте через пробел.

Важно! Для того чтобы отправить команду, просто введите ее в общем чате или том канале, к которому у бота есть доступ. Подробный перечень команд посмотрите на сервере бота.

Частые вопросы:

  • Что такое Дискорд Онлайн, и как им пользоваться

  • Как сделать бота, выдающего роли в Discord

  • Как в Discord добавить бота с телефона

  • Как в Discord создать бота для проигрывания музыки

Добавить комментарий

Содержание

  • Создание приложения и авторизация бота
  • Выбор среды разработки
  • Вариант 1: Python и библиотека discord
    • Шаг 1: Установка Python и библиотеки discord
    • Шаг 2: Создание словаря бота
    • Шаг 3: Создание тела бота
    • Шаг 4: Запуск бота
  • Вариант 2: JavaScript и discord.js
    • Шаг 1: Установка Node.js и discord.js
    • Шаг 2: Работа с файлами бота
    • Шаг 3: Запуск бота
    • Примеры полезных команд

Как создать бота в Дискорде

В статье мы расскажем о том, как создается приложение для бота, выполняется первая авторизация на сервере и пишется общий код для нормализации работы. Имея «каркас», вы уже можете добавлять пользовательские команды и сразу проверять, как они работают.

Создание приложения и авторизация бота

Далее речь пойдет о двух разных методах создания бота — при помощи JavaScript и Python. Каждый из них имеет свои особенности и нюансы, но вот метод создания приложения и авторизации бота на сервере остается одинаков, поскольку не зависит от выбранного языка программирования. После этого вы сможете перейти к подбору библиотеки и работе с кодом.

Перейти на Discord Developer Portal

  1. Перейдите по ссылке выше, чтобы оказаться на главной странице портала для разработчиков в Discord. Используйте личные авторизационные данные для входа в аккаунт.
  2. Авторизация на портале разработчиков для создания бота в Discord

  3. Создайте новое приложение, нажав кнопку «New Application».
  4. Переход к созданию нового приложения на портале разработчиков для создания бота в Discord

  5. Введите имя приложения и подтвердите его создание.
  6. Создание нового приложения на портале разработчиков для создания бота в Discord

  7. Разверните меню сайта, щелкнув по кнопке с тремя горизонтальными линиями.
  8. Открытие меню приложения на портале разработчиков для создания бота в Discord

  9. Из появившегося списка выберите раздел настроек «Bot».
  10. Переход в раздел Бот на портале разработчиков для создания бота в Discord

  11. Приступите к добавлению нового бота для данного приложения.
  12. Кнопка для создания бота в Discord на портале разработчиков

  13. Подтвердите отобразившееся уведомление, нажав «Yes, do it».
  14. Использование кнопки подтверждения для создания бота в Discord на портале разработчиков

  15. По завершении сайт обновится и откроется страница бота, где вы можете изменить его название, скопировать токен или добавить иконку, которая будет отображаться и в Дискорде.
  16. Основные параметры приложения для создания бота в Discord

  17. Однако сейчас бот еще не отмечен таковым и для него не установлены разрешения, поэтому через то же самое меню перейдите в раздел «OAuth2».
  18. Переход к выбору типа приложения для создания бота в Discord на портале разработчиков

  19. В списке «Scopes» отметьте галочкой «bot», обозначив тип созданного приложения.
  20. Выбор типа приложения для создания бота в Discord на портале разработчиков

    Lumpics.ru

  21. Найдите следующий блок — «Bot Permissions» и установите галочки напротив всех разрешений, которые вы хотите предоставить создаваемому боту.
  22. Выбор разрешений для создания бота в Discord на портале разработчиков

  23. То же самое сделайте и с остальными типами разрешений, они соответствуют доступным непосредственно в Discord для ролей.
  24. Выбор других разрешений для создания бота в Discord на портале разработчиков

  25. Теперь бот готов для авторизации. На этой же странице найдите строку со ссылкой и скопируйте ее.
  26. Копирование ссылки для создания бота в Discord на портале разработчиков

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

    Подробнее: Создание сервера в Discord

  28. Авторизация для создания бота в Discord через портал разработчиков

  29. Ознакомьтесь со списком всех разрешений и нажмите на «Авторизовать».
  30. Принятие списка с правами для создания бота в Discord через портал разработчиков

  31. Осталось только подтвердить появившуюся на экране капчу.
  32. Подтверждение капчи для создания бота в Discord через портал разработчиков

  33. Откройте соответствующий сервер в Discord и убедитесь в том, что бот находится в списке участников. Пока что он еще офлайн, а запуск станет доступен после написания «тела» бота при помощи Python или JS, чем мы и займемся далее.
  34. Проверка списка участников в сети для создания бота в Discord через портал разработчиков

Выбор среды разработки

Перед началом работы с кодом в упомянутых языках программирования уточним, что вам понадобится установить текстовый редактор или специальную среду разработки, поддерживающую синтаксис Python или JavaScript (в зависимости от выбранного). Конечно, можно использовать просто «Блокнот», но по удобству он уступает специализированным программам. Просмотрите их списки в обзорах по следующим ссылкам и выберите для себя подходящий софт.

Подробнее:
Выбор среды разработки для программирования
Текстовые редакторы для Windows

Выбор среды разработки для создания бота в Discord

Вариант 1: Python и библиотека discord

Если ранее вы не сталкивались с языками программирования или знакомы с ними только поверхностно, создание бота для Discord на Python — лучший выбор. Этот ЯП проще учится, компактный и имеет логически понятный синтаксис, поэтому идеально подходит новичкам. К тому же в сети есть огромное количество исходников с различными командами или уже готовыми ботами, которые ничего не мешает скопировать и использовать в своих целях. В следующих шагах вы узнаете, как создать «каркас» бота на Python и запустить его, чтобы проверить работу.

Шаг 1: Установка Python и библиотеки discord

По умолчанию в Windows нет встроенных функций и утилит, предназначенных для работы с Питоном, поэтому их придется установить отдельно, не забыв про подключаемую библиотеку discord, которая позволит взаимодействовать с полезными функциями и командами, связанными исключительно с Дискордом.

Перейти на официальный сайт Python

  1. Воспользуйтесь ссылкой выше, чтобы перейти на официальный сайт Python и нажмите кнопку для загрузки его последней версии.
  2. Кнопка скачивания компонентов языка программирования для создания бота в Discord при помощи Python

  3. На новой странице отыщите инсталлятор для Windows и начните его загрузку.
  4. Выбор версии языка программирования для создания бота в Discord при помощи Python

  5. Дождитесь завершения скачивания и запустите установщик.
  6. Загрузка установочного файла компонентов языка программирования для создания бота в Discord при помощи Python

  7. Можно запустить установку без изменений, но обязательно отметьте галочкой «Add Python X.X to PATH», чтобы все переменные среды добавились автоматически и не возникло проблем при дальнейшем вводе команд.
  8. Кнопка установки компонентов языка программирования для создания бота в Discord при помощи Python

  9. Ожидайте завершения установки и на всякий случай перезагрузите компьютер, чтобы все изменения вступили в силу.
  10. Процесс установки компонентов языка программирования для создания бота в Discord при помощи Python

  11. Откройте «Командную строку» удобным для вас способом, например, отыскав приложение в меню «Пуск».
  12. Переход в Командную строку для установки библиотек ЯП для создания бота в Discord при помощи Python

  13. Напишите команду pip install discord и подтвердите ее нажатием клавиши Enter.
  14. Команда установки библиотек ЯП для создания бота в Discord при помощи Python

  15. Начнется загрузка файлов и в консоли «побегут» строки. Не закрывайте данное окно до завершения скачивания.
  16. Процесс установки библиотек ЯП для создания бота в Discord при помощи Python

  17. Как только появилась информация «Successfully installed», закрывайте «Командную строку» и переходите далее.
  18. Успешная установка компонентов ЯП для создания бота в Discord при помощи Python

Если Python у вас установлен, но команда для добавления подключаемой библиотеки не работает, выполните обновление компонента PIP, о чем рассказывается в другой статье на нашем сайте. Там же вы найдете инструкцию и по изменению переменных среды, если этого не произошло во время установки.

Подробнее: Обновление PIP для Python

Шаг 2: Создание словаря бота

В этом варианте мы будем использовать словарь для бота, то есть конфигурационный файл, хранящий в разных именах значения токена, префикса и имени бота. Это существенно упрощает весь процесс написания кода и не заставляет каждый раз вспоминать данные приложения, чтобы ввести их в одной строке.

  1. Начните с запуска IDLE, отыскав добавленное приложение через меню «Пуск». Если вы скачали другую среду разработки, откройте ее и создайте новый проект на базе Python.
  2. Запуск среды разработки для создания бота в Discord при помощи Python

  3. После открытия нового окна вызовите меню «File» и выберите пункт «New File». Сделать это можно и при помощи комбинации клавиш Ctrl + N.
  4. Открытие нового файла в среде разработки для создания бота в Discord при помощи Python

  5. В новом окне, которое и предназначено для написания кода, вставьте блок

    settings = {
    'token': 'Ваш токен',
    'bot': 'Имя бота',
    'id': Client ID бота, без кавычек,
    'prefix': 'Префикс бота'
    }

  6. Вставка кода словаря для создания бота в Discord при помощи Python

  7. Теперь понадобится отыскать информацию для ее замены в словаре. Сначала найдите Client ID приложения на сайте разработчиков. Скопируйте его и замените в соответствующую строку.
  8. Копирование ИД на сайте приложения для создания бота в Discord при помощи Python

  9. Вызовите меню и перейдите в раздел «Bot».
  10. Переход к копированию токена для создания бота в Discord при помощи Python

  11. Скопируйте его уникальный токен, щелкнув по специально отведенной для этого кнопке.
  12. Копирование токена для создания бота в Discord при помощи Python

  13. Вставьте токен вместо надписи, сделайте то же самое с именем бота и используемым префиксом (префикс нужен для вызова команд и всегда идет перед ними, например !play, а вы можете заменить восклицательный знак на любые другие символы).
  14. Замена строк в файле словаря для создания бота в Discord при помощи Python

  15. Как только вся информация была заменена, снова вызовите меню «File» и выберите вариант «Save As».
  16. Переход к сохранению файла словаря для создания бота в Discord при помощи Python

  17. Создайте отдельную папку для файлов бота, назовите этот как config и подтвердите сохранение.
  18. Сохранение файла словаря для создания бота в Discord при помощи Python

Шаг 3: Создание тела бота

Для обеспечения базового функционирования бота ему нужно создать «тело» — основной код для запуска и работы на сервере. Понадобится отдельный файл, который можно назвать как угодно, но обязательно сохранить его в том же месте, где находится созданный ранее словарь.

  1. В среде разработки откройте меню «File» и создайте новый файл.
  2. Создание файла тела для создания бота в Discord при помощи Python

  3. Вставьте туда три команды, которые предназначены для импорта установленных библиотек и созданного ранее файла:

    import discord
    from discord.ext import commands
    from config import settings

  4. Импорт библиотек и словаря в файл тела для создания бота в Discord при помощи Python

  5. Добавьте строку bot = commands.Bot(command_prefix = settings['prefix']) # Так как мы указали префикс в settings, обращаемся к словарю с ключом prefix.
  6. Объявление бота в основном файле для создания бота в Discord при помощи Python

  7. Основной код таков:

    @bot.command() # Не передаём аргумент pass_context, так как он был нужен в старых версиях.
    async def hello(ctx): # Создаём функцию и передаём аргумент ctx.
    author = ctx.message.author # Объявляем переменную author и записываем туда информацию об авторе.


    await ctx.send(f'Hello, {author.mention}!') # Выводим сообщение с упоминанием автора, обращаясь к переменной author.

  8. Обращайте внимание на комментарии, идущие после знака «#» — они позволят разобраться с предназначением каждой строки.
  9. Добавление команд в основной файл для создания бота в Discord при помощи Python

  10. Команда для запуска выглядит так: bot.run(settings['token']) # Обращаемся к словарю settings с ключом token, для получения токена.
  11. Строка запуска приложения для создания бота в Discord при помощи Python

  12. По завершении снова откройте уже знакомое меню и перейдите к сохранению файла.
  13. Переход к сохранению основного файла для создания бота в Discord при помощи Python

  14. Задайте для него любое название и поместите в папку с конфигом.
  15. Сохранение основного файла для создания бота в Discord при помощи Python

Далее вы видите полный код, о котором шла речь выше, поэтому при надобности просто можете скопировать его.

Использование альтернативного кода для создания бота в Discord при помощи Python

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:UsersUSER_NAMEbot.py.

Запуск основного файла для создания бота в Discord при помощи Python

Перейдите в Дискорд и проверьте текущее состояние бота. Он должен отображаться в списке участников в разделе «В сети» вместе с зеленой точкой.

Проверка статуса бота для создания в Discord после его создания при помощи Python

Воспользуйтесь открытыми источниками или собственными знаниями, чтобы написать команды для бота или реализовать другие задачи, которые он должен выполнять. Для этого редактируйте его основной файл или создавайте другие, связывая все в единый проект.

Вариант 2: JavaScript и discord.js

Следующий вариант создания бота для Discord — использование JS и подключаемой библиотеки discord.js, которая добавляет все необходимые компоненты для работы с ботами. Принцип действий отличается от предыдущего варианта лишь инструментами и разницей в синтаксисах языков программирования, но остается примерно таким же.

Шаг 1: Установка Node.js и discord.js

Расширить функциональность JS и превратить его в язык программирования общего назначения поможет платформа Node.js, установкой которой и рекомендуем заняться в первую очередь. Для этого выполните простейший алгоритм действий:

Перейти на официальный сайт Node.js

  1. Откройте страницу Node.js в интернете и выберите последнюю рекомендованную версию для скачивания.
  2. Кнопка скачивания расширенной платформы для создания бота в Discord при помощи JavaScript

  3. Дождитесь получения исполняемого файла и запустите его.
  4. Процесс загрузки расширенной платформы для создания бота в Discord при помощи JavaScript

  5. Следуйте появившимся на экране инструкциям, завершите установку и перезагрузите компьютер.
  6. Установка расширенной платформы для создания бота в Discord при помощи JavaScript

  7. Раскройте «Пуск» и через поиск отыщите классическое приложение «Командная строка».
  8. Переход в Командную строку для создания бота в Discord при помощи JavaScript

  9. В ней напишите команду npm init и активируйте ее нажатием Enter.
  10. Команда установки файлов пакетов для создания бота в Discord при помощи JavaScript

  11. Создайте стандартный пакет с пользовательской информацией, нажимая Enter после ввода каждого параметра, или оставьте все по умолчанию.
  12. Процесс установки файлов пакетов для создания бота в Discord при помощи JavaScript

  13. Когда все параметры пакета окажутся заданы, вы получите предупреждение, которое нужно подтвердить, снова нажав Enter.
  14. Успешная установка файлов пакетов для создания бота в Discord при помощи JavaScript

  15. Введите команду npm install для установки недостающих стандартных компонентов.
  16. Команда установки основных компонентов библиотек для создания бота в Discord при помощи JavaScript

  17. Дождитесь завершения их загрузки и появления строки ввода.
  18. Успешная установка компонентов библиотек для создания бота в Discord при помощи JavaScript

  19. Напишите npm install discord.js.
  20. Установка библиотеки для создания бота в Discord при помощи JavaScript

  21. Как только и эта команда выполнена, откройте папку своего пользователя и убедитесь в наличии созданных файлов пакета формата JSON.
  22. Проверка добавленных пакетов для создания бота в Discord при помощи JavaScript

Шаг 2: Работа с файлами бота

Все действия, связанные с файлами бота и программным кодом, рассмотрим в рамках одного этапа, поскольку делить их на несколько просто не имеет смысла. Вам понадобятся три основных файла, куда и вписываются все необходимые функции: один отвечает за конфигурацию бота, второй — за «тело», а третий хранит список добавленных команд.

  1. Для начала создайте файлы «bot.js» и «config.json» в одном каталоге.
  2. Создание основных файлов для создания бота в Discord при помощи JavaScript

  3. Откройте через текстовый редактор или среду разработки «config.json» и добавьте туда такие строки:

    {
    "token" : "Ваш_токен",
    "prefix" : "Ваш_префикс"
    }

    Соответственно, выражения в двойных кавычках замените на уникальный токен бота и предпочитаемый префикс.

  4. Редактирование конфигурационного файла для создания бота в Discord при помощи JavaScript

  5. Откройте для редактирования файл «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); // Авторизация бота

    Читайте комментарии к строчкам, идущие после слэшей («//»), чтобы самостоятельно разобраться с предназначением каждой.

  6. Редактирование файла тела для создания бота в Discord при помощи JavaScript

  7. Создайте третий файл — «comms.js», в котором в будущем будут храниться все необходимые команды.
  8. Создание файла с командами для создания бота в Discord при помощи JavaScript

  9. В него вставьте основной блок, который в будущем будет расширяться:

    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;

  10. Редактирование файла с командами для создания бота в Discord при помощи JavaScript

Для дальнейшей работы с командами достаточно будет объявить их функции и пополнить список соответствующими блоками кода. На примере готовый файл «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 завершены, а значит, можно запустить его и проверить работу. Для этого вам понадобится выполнить следующее:

  1. Откройте меню «Пуск» через поиск отыщите «Командную строку» и запустите ее.
  2. Переход к запуску приложения для создания бота в Discord при помощи JavaScript

  3. Введите node bot.js, где bot.js — название основного файла с кодом для бота. Если он находится не в вашей домашней папке, указывайте полный путь к файлу или сначала перейдите к расположению, используя команду cd.
  4. Запуск приложения для создания бота в Discord при помощи JavaScript через командную строку

Примеры полезных команд

В завершение этого варианта вкратце расскажем о двух полезных командах, которые могут пригодиться при настройке бота. Их можно использовать в качестве тестовых, когда работа над проектом еще находится на стадии развития. Первая команда — !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, чтобы самостоятельно исправлять ошибки или редактировать код под себя.

Введение

Это первая статья про создание бота для Discord. В конце статьи находятся ссылки на следующие части, со временем они будут дополняться. Статьи следуют друг за другом, без каких-либо «информационных дыр». Если нашли опечатку или неточность, отпишите о проблеме в комментариях или в личных сообщениях, максимально оперативно всё поправим! А теперь переходим непосредственно к созданию бота.

В данной части

  1. Создание тестового сервера

  2. Включение режима разработчика

  3. Создание приложения и получение токена

  4. Добавление бота на сервер

  5. Установка библиотеки discord.py

  6. Первые строчки кода

Создание сервера

Гайд будет максимально подробный, поэтому и начинать будем с создания тестового сервера. Зачем он нужен? Лишь для вашего удобства и безопасности, если у вас уже есть большой сервер, тем более не стоит сразу добавлять на него разрабатываемого бота. Никто не защищён от багов и дыр в безопасности.

  1. Заходим в дискорд

  2. Слева видим список серверов, листаем в самый низ до кнопки «Создать сервер«.

  3. Создаём сервер по любому из предложенных шаблонов.

Включаем режим разработчика

Это необязательно, но очень желательно. В режиме разработчика появляются некоторые полезные элементы для удобства разработки, например, в меню пользователя появляется пункт, который позволяет скопировать его ID.

Чтобы включить этот режим, заходим в настройки.

В категории «Настройки приложения» ищем «Расширенные«.

И включаем режим разработчика.

Получение токена

Для начала нам нужно зайти на страницу создание приложений и нажать New Application.

После этого вам предложат назвать ваше приложение (Потом можно будет изменить).

Создание приложени

Создание приложени

После создания, попадаем на страницу настройки приложения. В меню выбираем «Bot«.

На данной странице нажимаем на «Add Bot«. Скопируем токен и сохраним его.

Так же, сразу можно выдать дополнительные разрешения боту, чтобы потом об этом не задумываться.

Добавление бота на сервер

В меню ищем пункт OAuth2 –> URL Generator.

В поле SCOPES выбираем bot и applications.commands. В появившемся ниже поле выбираем Administrator, это более удобно для тестирования. Но когда бот будет работать в продакшене, лучше выставлять только те права, которые правда нужны, потому что никто не защищён от потери токена, а с правами администратора это может стать очень большой проблемой.

Копируем появившеюся ниже ссылку и вставляем в адресную строку браузера. Если у вас не выполнен вход в браузере, его необходимо произвести. После чего выбираем тестовый сервер из списка и нажимаем «Продолжить» и далее «Авторизовать«.

Ура! Наш бот на тестовом сервере!

Установка библиотеки

Для начала нужно установить python, данный этап не расписан, но желательно установить версию 3.10 (Последняя версия на момент написания 3.10.5). Если у вас Windows, для проверки можете использовать следующую команду

py --version

В ответ получите версию вашего python. Устанавливать будем не стабильную, а разрабатываемую версию, для этого пропишем следующую команду. (Это можно делать уже внутри проекта). Хотя некоторые IDE устанавливаю git вместе с собой, можете скачать его отдельно.

py -m pip install git+https://github.com/rapptz/discord.py

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

py -3 -m pip install -U discord.py
py -3 -m pip install -U discord.py[voice]

Подробнее про установку библиотеки и саму библиотеку можно прочитать тут.

Первые строчки кода

Пришло время писать код! Программирование в статьях будет происходить в PyCharm, хоть это и довольно тяжёлая IDEA, она удобная и бесплатная для студентов.

Не советую создавать проект через внутренний интерфейс, может появиться множество ненужных папок и файлов, вместо этого создадим папку проекта вручную и откроем как пустой проект.

Для этого заходим в PyCharm, далее File –> Open.

P.s. Не обращайте внимания на другую тему IDE.

В появившемся окне ищем созданную папку, выбираем её и нажимаем «Ok«. Обратите внимание на то, что нужно просто нажать по папке, а не проваливаться в неё.

Если PyCharm автоматически не создал main.py, создайте его вручную.

Вставляем код ниже и запускаем.

import discord # Подключаем библиотеку
from discord.ext import commands

intents = discord.Intents.default() # Подключаем "Разрешения"
intents.message_content = True
# Задаём префикс и интенты
bot = commands.Bot(command_prefix='>', intents=intents) 

# С помощью декоратора создаём первую команду
@bot.command()
async def ping(ctx):
    await ctx.send('pong')


bot.run('token')

В консоли вы увидите логи запуска бота. Они могут быть красными, не бойтесь, сначала прочитайте сами сообщения, они скорее, всего просто информационные.

Идём в дискорд и используем нашу первую команду.

Немного объясним данную структуру. Поскольку это обычная команда, вся информация хранится в ctx(Переменная одноимённого класса). Она имеет следующие поля:

['args', 
'author', 
'bot', 
'channel', 
'cog', 
'command', 
'command_failed', 
'guild', 
'invoked_parents', 
'invoked_subcommand', 
'invoked_with', 
'kwargs', 
'me', 
'message', 
'prefix', 
'subcommand_passed', 
'valid', 
'voice_client']

И следующие команды:

['fetch_message', 
 'history', 
 'invoke', 
 'pins', 
 'reinvoke', 
 'reply', 
 'send', 
 'send_help', 
 'trigger_typing', 
 'typing']

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

print(dir(ctx))

На более правильно прочитать документацию про Context.

Заключение

Сразу отвечу всем комментаторам. Да — подобных статей море, в том числе есть официальная документация. Но поскольку в моих планах есть создать серию статей, я хотел бы, что бы в них было описано всё, начиная с самых азов.

И небольшое примечание. Статьи строятся на основании того, что у вас есть опыт и знания программирования на python.

Следующие части

Скоро…

Простая инструкция.

Создание собственно бота Discord – не такой сложный и долгий процесс, как можно предположить. Для этого необязательно быть программистом, достаточно базового логического мышления и желания вникнуть в процесс – особенно если вас интересует написание базового бота.

Для создания бота в Дискорде не придется устанавливать дополнительные программы или платить деньги – бот будет полностью существовать в облаке. В процессе мы воспользуемся несколькими инструментами: библиотеками Python, Discord API и Repl.it – так называется платформа для проведения облачных вычислений.

В этом гайде мы расскажем, как сделать бота в Дискорде.

Как зарегистрировать учетную запись Discord Bot

Первый шаг в создании бота Discord – создание собственного аккаунта Discord Bot. Он понадобится, чтобы получить доступ к API Discord и библиотекам Python.

Для регистрации учетной записи Discord Bot:

  1. Залогиньтесь на сайте Discord в свой обычный аккаунт.
  2. Откройте веб-версию интерфейса для разработчиков.
  3. Нажмите кнопку New Application («Новое приложение») в правом верхнем углу страницы.
  4. Придумайте имя для своего приложения (бота) и нажмите Create («Создать»).
  5. Выберите вкладку Bot («Бот») в меню слева и нажмите Add Bot («Добавить бота»). Подтвердите действие, нажав кнопку Yes, do it! («Да, давайте!»).
  6. Настройки Public Bot и Require OAuth2 Code Grant менять не нужно.

Теперь у вас есть собственный бот – правда, пока бесполезный.

После этого нажмите Click to Reveal Token и скопируйте куда-нибудь токен бота Discord – это уникальный ключ доступа к нему. Комбинацию стоит передавать только другим разработчикам, которым вы доверяете, а иначе лучше держать при себе.

В случае, если кто-то все-таки узнает токен, можно нажать Regenerate – это действие сгенерирует новый токен.

Как добавить бота на сервер в Дискорде

Чтобы бот мог взаимодействовать с чатами сервера, его, что логично, нужно туда добавить, практически как обычного пользователя.

Для добавления бота создайте URL-инвайт:

  1. Откройте вкладку OAuth2. Поставьте галочку рядом с пунктом bot в секции scopes.
  2. Далее необходимо предоставить боту разрешения, нужные для работы. Мы создаем простого текстового бота, так что ему потребуется всего несколько прав – в зависимости от задуманных функций их набор будет меняться. Главное, трижды подумайте, чем давать боту разрешение Administrator – оно может поставить под угрозу безопасность сервера.
  3. Как только укажите необходимые разрешения, можете нажать Copy выше этого меню. Так вы скопируете приглашение, которое понадобится для добавления бота на сервер.
  4. Вставьте скопированную ссылку в адресную строку бразуера, выберете сервер для бота и нажмите Authorize. Разумеется, приглашать бота на сервер могут только пользователи, имеющие право «Управление сервером» на конкретном сервере Discord.

Теперь бот создан и «заселен». Приступаем к самому интересному: написанию кода на Python для работы бота. Не переживайте: сейчас расскажем обо всем пошагово.

Как написать код для чат-бота в Дискорде

В процессе программирования бота мы воспользуемся библиотекой Python discord.py. Так называется API, созданный специально для упрощения написания кода ботов Discord.

Как установить discord.py

Можно писать код для бота в любом редакторе кода на своем компьютере или даже в блокноте – последний вариант, мягко говоря, не слишком удобен. В этом гайде мы воспользуемся онлайн-средой IDE Repl.it, доступ к которой можно получить прямо в браузере. Так работать с кодом будет намного проще.

В запущенной среде создайте новый Repl и укажите язык программирования Python.

Для подключения библиотеки discord.py просто введите команду import discord в начале main.py. Repl.it автоматически выполнит необходимые действия при нажатии Run.

В случае, если вы создаете бота локально на компьютере под управлением Windows, используйте эту строку кода для установки discord.py:

py -3 -m pip install -U discord.py

На MacOS команда выглядит несколько иначе – если этот вариант не сработает, попробуйте заменить pip на pip3:

python3 -m pip install -U discord.py

Как задать события для бота Discord

События – это набор правил, которые позволяют боту в Дискорде выполнять различные функции, реагируя на происходящее в чатах: например, ответить на чье-то сообщение определенным образом. Библиотека discord.py основана на концепте событий, так что с ними стоит разобраться.

Для примера научим нашего бота отвечать на заданное сообщение – прописать такую функцию просто, она поможет вам понять принципы программирования бота. Позже мы научим его делать и другие вещи.

Для начала добавьте в файл main.py (его можно переименовать, только избегайте названия discord.py) следующий код:

import discordimport os

client = discord.Client()

@client.eventasync def on_ready(): print(‘We have logged in as {0.user}’.format(client))

@client.eventasync def on_message(message): if message.author == client.user: return

if message.content.startswith(‘$hello’): await message.channel.send(‘Hello!’)

client.run(os.getenv(‘TOKEN’))

Далее мы создадим файл с расширением .env для хранения токена бота, который вы скопировали ранее. Тем, кто создает бота локально, этот пункт можно пропустить: достаточно заменить код os.getenv(‘TOKEN’) самим токеном.

К слову, .env файлы используются для объявления переменных и, в отличие от других файлов проекта, видны только его создателю. По этой причине разработчикам на Repl.it можно хранить в .env конфиденциальную информацию вроде ключей и токенов.

Для создания .env-файла нажмите «Добавить файл» и укажите расширение .env в конце названия документа.

Внутрь скопируйте строчку кода, указанную ниже, а также вставьте туда токен своего бота:

TOKEN=[вставьте токен сюда]

Настало время разобраться, как именно работает код бота для Дискорда, который вы скопировали ранее:

  1. Сперва код импортирует библиотеку discord.py;
  2. Вторая строка используется для подключения библиотеки os – она нужна исключительно для получения переменной TOKEN из файла .env. В локальных проектах эту строку можно удалить.
  3. Далее создается экземпляр Client, то есть устанавливается связь с самим Discord.
  4. @client.event() – декоратором для регистрации события. Он относится к асинхронным библиотекам, работающим через обратные вызовы – то есть с использованием функций, которые вызываются в результате какого-то события. В данном случае функция on_ready() срабатывает, когда бот включается, а on_message() вызывается, когда бот получает сообщение.
  5. Без дополнительных условий on_message() будет срабатывать каждый раз, когда кто-то пишет в чат. Только мы не хотим, чтобы бот отвечал самому себя, поэтому прописываем правило: если Message.author совпадает с Client.user, то функция просто возвращает return (бездействует).
  6. Далее бот проверяет Message.content (содержимое сообщения). Если оно начинается с ’$hello’, то бот отвечает приветствием ‘Hello!’.
  7. Последняя строка подсоединяет бота с помощью токена входа, который вызывается из файла .env.

Теперь, когда базовый код для бота написан (ну или скопирован), остается главное – запустить его в Discord.

Как запустить бота в Дискорде

В Repl.it нажмите специальную кнопку запуска вверху.

В локальном редакторе кода для запуска бота можно использовать специальные команды для терминала. 

Для ПК с Windows:

py -3 main.py

Для MacOS и других ОС:

python3 main.py

Чтобы проверить работоспособность бота, перейдите в свою комнату Discord и отправьте сообщение с текстом $hello. Бот должен ответить: Hello!

Делаем бота умнее

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

Для примера научим бота отвечать сообщением Hello! всем, кто напишет грустное сообщение с одним из ключевых слов.

Пользователи смогут самостоятельно пополнять запас подбадривающих фраз бота, а полученные сообщения с триггерными словами будут сохраняться в базу данных.

Кроме того, научим бота отправлять случайную вдохновляющую фразу каждый раз, когда кто-то напишет команду $inspire.

С этого и начнем.

Как добавлять в бота новые фразы

Можно прописывать все реплики вручную, но в случае с вдохновляющими цитатами мы воспользуемся готовой англоязычной API zenquotes.io. Также импортируем два дополнительных модуля Python, добавим функцию get_quote() и научим бота ее вызывать.

После всех манипуляций код выглядит так:

import discordimport osimport requestsimport json

client = discord.Client()

def get_quote(): response = requests.get(«https://zenquotes.io/api/random») json_data = json.loads(response.text) quote = json_data[0][‘q’] + » –» + json_data[0][‘a’] return(quote)

@client.eventasync def on_ready(): print(‘We have logged in as {0.user}’.format(client))

@client.eventasync def on_message(message): if message.author == client.user: return

if message.content.startswith(‘$inspire’): quote = get_quote() await message.channel.send(quote)

client.run(os.getenv(‘TOKEN’))

Вот, что мы добавили:

  • Модуль requests – с его помощью бот делает HTTP-запрос для получения данных из API. API возвращает модуль JSON, упрощает работу с возвращенными данными.
  • Функция get_quote() – она использует модуль запросов для запроса данных из URL-адреса API. API возвращает случайную вдохновляющую цитату.
  • Внутри предыдущей функции мы используем json.loads(), чтобы преобразовать ответа API в JSON. Цитата выводится в виде строки.
  • В конце кода мы поменяли логику бота. Раньше он реагировал на сообщения, начинавшиеся с $hello, а теперь триггером служит $inspire. Вместо строго определенного ответа Hello! он запрашивает случайную цитату quote = get_quote() и отправляет ее в чат.

Теперь вы можете запустить бота и протестировать его самостоятельно.

Как научить бота в Дискорде подбадривать пользователей

Напишем функцию, благодаря которой бот будет отвечать позитивными постами пользователям, которые пишут сообщения с грустными ключевыми словами.

В первую очередь пропишек список Python, содержащий слова-триггеры.

После создания переменной client добавляем код:

sad_words = [«sad», «depressed», «unhappy», «angry», «miserable»]

Слова можно менять, в том числе на русскоязычные. 

Следом добавляем набор реплик, которыми бот будет отвечать загрустившим пользователям.

После списка sad_words добавляем еще один:

starter_encouragements = [ «Cheer up!», «Hang in there.», «You are a great person / bot!»]

Опять-таки, можно менять фразы на свое усмотрение – это всего лишь пример.

Как научить бота Discord отвечать на сообщения

Осталось научить бота использовать два новых списка. Поскольку по задумке бот будет выбирать случайную фразу из всего набора, для начала импортируем random. Добавляем строку в начало кода:

import random

Далее модифицируем функцию on_message() – нам нужно, чтобы она проверяла все сообщения пользователей на наличие триггеров из списка sad_words. Если оно обнаружится, то бот ответит.

Получился такой код:

async def on_message(message): if message.author == client.user: return

msg = message.content

if msg.startswith(‘$inspire’): quote = get_quote() await message.channel.send(quote) if any(word in msg for word in sad_words): await message.channel.send(random.choice(starter_encouragements))

Теперь вы можете снова протестировать бота. Если все хорошо, то можете поэтапно кастомизировать его, задавая уникальные реплики и триггеры. Стримеры, например, могут научить бота выдавать расписание трансляции или ссылку на свой канал – можно придумать огромное количество применений.

* * *

Теперь вы знаете, как создать и настроить бота в Дискорде.

Как почистить Windows от хлама и ненужных файлов – гайд по очистке памяти Виндовс

Как играть в «Герои 3» по сети бесплатно


Download Article


Download Article

Discord is a popular chatting program that’s highly used and favored by gamers. Users can create their own Discord channels for free and invite people to join them. Some people use Bots in Discord to keep music playing, greet new people in the channel, and so much more. This wikiHow will show you how to create a bot for Discord. You’ll need to be at least a little familiar with coding since Javascript is what makes the bot work.

  1. Image titled Create a Bot in Discord Step 1

    1

    Download Node.js from https://nodejs.org/en/download/. Node.js is a free JavaScript runtime that you’ll need to make your bot. You can pick either the Windows or macOS installer as well as which version. The LTS version is recommended for this process.

    • Ideally you should have a server OS installed on your computer Windows Server, Ubuntu Server, or macOS server. You can also host your bot on Azure, AWS, or Google Cloud.
  2. Image titled Create a Bot in Discord Step 2

    2

    Run the installer. A Windows computer just needs to click on the downloaded file to launch the installer, but a macOS computer needs to unpack the file to find the installer application. Make sure you read any and all agreements as you go through the installer.

    Advertisement

  3. Image titled Create a Bot in Discord Step 3

    3

    Create a Discord account (optional). If you don’t already have a Discord account, you sign up for one at https://discord.com/.

  4. Image titled Create a Bot in Discord Step 4

    4

    Login to your Discord account and channel. Open the Discord app on your computer and navigate to the channel you want your bot in.

  5. Advertisement

  1. Image titled Create a Bot in Discord Step 5

    1

    Go to https://discord.com/developers/applications/me in a web browser. You should be logged in already through the app, but log in again if you are prompted. In this part, you’ll be creating an app that activates the bot, so you’ll be creating an app as well as a bot.

  2. Image titled Create a Bot in Discord Step 6

    2

    Click the blue New Application button. You’ll see this to the right side of the browser. A window will pop up for your app’s name.

    • Type in the application’s name and click “Create.” You’ll want to create a name that is descriptive, like «Greeterbot» if your app bot greets people. However, «Greeterbot» will most likely trigger errors later on because it’s a popular name, so add a series of numbers after the name, like «Greeterbot38764165441.»
  3. Image titled Create a Bot in Discord Step 7

    3

    Click Bot in the left-hand menu. This is also the jigsaw puzzle piece icon.

  4. Image titled Create a Bot in Discord Step 8

    4

    Click Add Bot. This is under the “Build-A-Bot” header.

    • Click “Yes, do it!” in the pop-up to confirm your action.
    • If you get an error about the name being too popular, go to the application page and change the app name. For example, “Music Bot” was too popular, so adding a few numbers to the end of the app helped.
  5. Image titled Create a Bot in Discord Step 9

    5

    Click Click to Reveal Token. You’ll see this in the information area of your bot. When you click that text, you see a string of letters and numbers.

    • Click “Copy” to copy all that text. You can paste it on a sticky note somewhere, but make sure you have access to that code and don’t give it out to anyone. Whoever has that code can control the bot. This code will always be here if you need it.
  6. Advertisement

  1. Image titled Create a Bot in Discord Step 10

    1

    Click General Information. This is in the menu on the left.

  2. Image titled Create a Bot in Discord Step 11

    2

    Click Copy under Client ID. You’ll see this around the middle of the web page.

  3. Image titled Create a Bot in Discord Step 12

    3

  4. Image titled Create a Bot in Discord Step 13

    4

    Paste your URL into the address bar on your web browser. You’ll be taken to a page where you can assign your bot to a channel.

    • Click the drop-down box to display all your compatible channels.
    • Click “Authorize” to continue. You’ll get a confirmation that the bot was moved and that you can close the active tab.
  5. Advertisement

  1. 1

    Create a folder on your desktop for your bot code. You’ll be making files of code that will go in here.

    • This code was provided by https://www.digitaltrends.com/gaming/how-to-make-a-discord-bot/.
    • You can search the internet for bot codes you want, like ones that play music constantly. This wikiHow uses a code sample for a bot that responds to any text starting with «!»
  2. 2

    Open a text editor. You can use the default programs like Notepad for Windows or TextEdit for Mac.

  3. 3

    Type the following code:

      {
      “token”: “Your Bot Token”
      }
      
    • Make sure you enter that Bot Token number you got from the previous steps between the quotation marks in the text.
  4. 4

    Save the file as “auth.json”. Make sure the file doesn’t save with a .txt file extension.

  5. 5

    Start a new document. You can do this by either pressing Ctrl+N (Windows), or Cmd+N (Mac), or clicking “New” from the “File” tab.

  6. 6

    Type the following code:

      {
      “name”: “greeter-bot”,
      “version”: “1.0.0,
      “description”: “My First Discord Bot”,
      “main”: “bot.js”,
      “author”: “Your Name”,
      “dependencies”: {}
      }
      
    • Make sure you replace «author” name with your name. You can also change the “description” if you don’t like “My first discord bot.”
  7. 7

    Save the file as “package.json”. Make sure the file doesn’t save with a .txt file extension.

  8. 8

    Start a new document. You can do this by either pressing Ctrl+N (Windows), or Cmd+N (Mac), or clicking “New” from the “File” tab.

  9. 9

    Type your bot’s code. For example, if you want to create a bot that responds to any messages that start with «!», type the following code:

      var Discord = require('discord.io');
      var logger = require('winston');
      var auth = require('./auth.json');
      // Configure logger settings
      logger.remove(logger.transports.Console);
      logger.add(new logger.transports.Console, {
          colorize: true
      });
      logger.level = 'debug';
      // Initialize Discord Bot
      var bot = new Discord.Client({
         token: auth.token,
         autorun: true
      });
      bot.on('ready', function (evt) {
          logger.info('Connected');
          logger.info('Logged in as: ');
          logger.info(bot.username + ' - (' + bot.id + ')');
      });
      bot.on('message', function (user, userID, channelID, message, evt) {
          // Our bot needs to know if it will execute a command
          // It will listen for messages that will start with `!`
          if (message.substring(0, 1) == '!') {
              var args = message.substring(1).split(' ');
              var cmd = args[0];
             
              args = args.splice(1);
              switch(cmd) {
                  // !ping
                  case 'ping':
                      bot.sendMessage({
                          to: channelID,
                          message: 'Pong!'
                      });
                  break;
                  // Just add any case commands if you want to.
               }
           }
      });
      
  10. Image titled Create a Bot in Discord Step 14

    10

    Save the file as “bot.js”. Make sure the file doesn’t save with a .txt file extension.

    • You can close your text editor.
  11. Advertisement

  1. Image titled Create a Bot in Discord Step 15

    1

    Open a command prompt window. On Windows, you can search “Cmd” in the Windows search field in the Start Menu. On Mac, you can search Spotlight for “Command Prompt.”

  2. Image titled Create a Bot in Discord Step 16

    2

    Navigate to your bot folder on your desktop. For example, you can type cdUsersDefault DesktopDesktopDiscordBotfoldername.

  3. Image titled Create a Bot in Discord Step 17

    3

    Type npm install discord.io winston –save and press Enter. With Node.js installed, this line will automatically download the dependencies for your bot in your desktop folder.

  4. Image titled Create a Bot in Discord Step 18

    4

  5. Advertisement

  1. Image titled Create a Bot in Discord Step 19

    1

    Type node bot.js and press Enter in the command prompt. If you get an error line, you did something wrong.

  2. Image titled Create a Bot in Discord Step 20

    2

    Type “!Intro” in Discord. You’ll want to type this in the channel your bot is in. The example code provided triggers the bot to respond «Pong!» to text starting with “!”. So to test if the bot is working, type “!Intro” and wait for a response.[1]

  3. Image titled Create a Bot in Discord Step 21

    3

    Check your coding if you didn’t hear a response. If your bot didn’t respond to your «!Intro» in Discord, go through this wikiHow again and check to make sure your bot is set up correctly. Make sure:

    • Node.js installed correctly.
    • The Bot Token is entered correctly in your auth.json file.
    • You’re in the same channel as the bot.
    • The bot is on the server.
    • Your coding is correct in your auth.json, bot.js, and package.json files.
    • You downloaded all the dependencies for your bot to work using Command Prompt with Node.js installed.
  4. Advertisement

Add New Question

  • Question

    My bot says it’s offline what do I need to do?

    Josh I Guess

    Josh I Guess

    Community Answer

    Have you done the code correctly? Try redoing the code. Make sure you do «node bot.js» without the quotes when you finish the code.

  • Question

    What do I do if it says error when typing node bot.js into command prompt?

    Josh I Guess

    Josh I Guess

    Community Answer

    Have you done the code correctly? Try redoing the code. Make sure you’re typing everything right.

Ask a Question

200 characters left

Include your email address to get a message when this question is answered.

Submit

Advertisement

Thanks for submitting a tip for review!

References

About This Article

Article SummaryX

1. Download and install Node.js.

2. Open the Discord app and log in.

3. Create the bot on Discord.

4. Put the bot in a Discord channel.

5. Code the bot.

6. Install bot dependincies.

7. Test the bot works.

Did this summary help you?

Thanks to all authors for creating a page that has been read 81,459 times.

Is this article up to date?

Понравилась статья? Поделить с друзьями:
  • Как написать конспект на компьютере от руки
  • Как написать конспект лекции
  • Как написать конспект кратко
  • Как написать конспект если лень
  • Как написать конспект занятия для дошкольников