Dm db бот дискорд как пользоваться

Обновлено: 04.07.2024

Начнём. Ссылка на мой youtube канал.

Discord bot туториал. Туториал по созданию ботов для дискорда на node.js используя discord.js.

Creation date : 06.12.2019

Давайте начнём создание бота. Если у вас установлена node.js, то пропустите сделающие 2 строчки. Заходим на сайт node.js, скачиваем, устанавливаем. Скриншотов процесса установки нету, тк переустанавливать node.js нету желания. Но там всё интуитивно понятно.

Создание файлов, инициализация проекта, установка библиотек.

Создаём папку bot. Желательно не использовать кирилицу, юникод и т. п. в названии. Сразу же создаём файл index.js или bot.js. Это не несёт особого смысла. Можно назвать как угодно, но принятно index.js / bot.js. Это будет главный файл бота, т.е. первым запускается, в нём основной код бота. Далее открываем консоль / терминал если у вас linux. Для быстрого открытия консоли на windows можно нажать WIN + R, ввести cmd. Далее переходим в папку бота, думаю как это сделать через консоль всем понятно. Пишим : npm init - инициализация проекта. Жмём enter до конца. Если ошибка в package name, то напишите bot. npm i discord.js - установка библиотеки discord.js.

Далее рекомендую установить один из следующих редакторов кода :

Если очень слабый компьюер можете поставить notepad++, но это для постоянной основы не самый хороший вариант. Лично я использую Atom.

Вы можете зарегистрировать его на сайте discord developers. Жмём кнопку "New Application". Вводим название бота. Жмём "Create". Переходим во вкладку "Bot", нажимаем "Add Bot", затем "Yes, do it!" Находим строку "token", немного ниже есть кнопка "Copy", нажимаем. Теперь в вашем буфере обмена есть токен бота.

Создадим первый код. Пишем :

Открываем консоль, переходим в папку проекта и пишем :

в зависимости от названия файла. Если у вас windows, то вы можете создать файл start.bat с текстом

Если линукс, то вы можете создать файл start.sh

Это будет запускать бота. Далее я не буду говорить про запуск. Делайте это сами.

Создаем файл config.json с конфигурацией нашего бота.

В начале кода бота напишем :

Еще вы можете создать конфиг прямо в коде бота.

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

Давайте залогируем тег автора.

Также можно писать не

.startsWith проверят начинается ли строка с символов в аргументах.

Также даже начинающим программистам будет очень полезна в боте команда !eval для выполнения кода не пиша его в коде бота, т.е. вы пишите !eval какой-то код и бот выполняет этот код.
Я нашёл хороший туториал по этой команде на github. Рекомендую ознакомиться и взять себе команду в код бота. Принцип её работы мы разберём позже. Тык.

Image alt

Это называется RichEmbed (Embed). Давайте отправим простой эмбед похожий на данный. (Картинка ниже)

Image alt

Для этого создадим новую команду !ping .

В Embed есть много различных параметров, вы можете прочесть их далее, либо посмотреть на оффициальном сайте discord.js

Давайте сделаем команду для получения информации о пользователе. Команда взята из моего бота. Будем использовать библиотеку moment.js , устанавливаем npm i moment.js

Image alt

Мой дискорд сервер!

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

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Это дает мне ошибку «TypeError: on_message () отсутствует 1 обязательный позиционный аргумент: 'message'". Это так далеко, как я получил сейчас. Буду признателен за любую помощь, как я уже сказал, я все еще немного новичок в Python, я начал использовать его только около 2 месяцев назад.

3 ответа

Ваш первый код использует древнюю, устаревшую и неподдерживаемую версию dpy.

Вы в основном корректно обновили его во втором коде, за исключением нескольких ошибок, таких как on_message событие.

Он не работает, потому что он принимает только один аргумент message , в этом событии нет ctx .

Таким образом, событие передает один аргумент, но ваша функция принимает 2, таким образом, ошибку. Правильный код будет: async def on_message(message):

Но теперь вы будете в замешательстве, что делать с этой строкой, которую вы написали: await ctx.send(channel, message.content)

Также в заключение я заметил, что вы использовали строку здесь: bot.get_channel('channel ID') это может быть вы просто приводите пример, но просто помните, что Идентификаторы являются целыми числами, если вы передадите строку, она никогда не найдет этот канал.

Например, это неверно : bot.get_channel('123456789111315178')

И это будет действительно: bot.get_channel(123456789111315178)

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

'ctx' это commands.Context, который предоставляет информацию о командах, которые выполняются. Поскольку это не команда, а событие, вы не должны предоставлять ее.

Не проверено, но это должно помочь:

Исходя из этой ошибки, я бы сказал, что в какой-то момент вы, вероятно, вызываете on_message () и не предоставляете параметр message . Просмотрите ваш код и посмотрите, возможно ли это так.

В качестве альтернативы, если какой-то другой код, который вы не написали, вызывает вашу функцию, то он может вызывать только on_message () с одним аргументом, и в этом случае аргумент ctx может быть несовместим с этой функцией.

Unlike my previous bot this will be closed-source. This repo is made only for install & usage instructions as well as bug tracking and feature requests.

Adding D&DBot

Usage

ex: !r2d20 - rolls 2 d20s

ex: !r5d10 + 1 - rolls 5 d10s then adds 1 to each roll (spacing does not matter)

ex: !r3d4 -5 - rolls 3 d4s then subtracts 5 to each roll (spacing does not matter)

!coinflip - flips a coin

!stats [stat] -- use !stat to sell all of your sheet, !stat ch[aracter], !stat sp[ell], !stat sk[ills], !stat eq[uipment] to see specific pages NOTE: b[lah] 'lah' is optional in command, meaning !stat ch shows the same as !stat character.

!set [attribute] [whatever] -- used to change items on the character sheet

  • To modify Str/dex/cha/con Modifiers, it's strmod, dexmod, chamod, etc
  • To modify Str/dex/cha/con SavingThrowStats, it's strst, dexst, chast, etc
  • To modify Str/dex/cha/con Stats, it's str, dex, cha, etc.

ex: !set Alignment Neutral Evil

  • !add [attribute] [whatever] -- Case sensitive as well

ex: !add CurrentHP 5

ex: !add Treasure Gold Chain

ex: !add Equipment Bone Club

ex: !del CurrentHP 2

ex: !del Personality Bad Guy

ex: !del Treasure Gold Chain

ex: !appearance 20 6'0 180 Blue Tan Brown

FOR SERVER OWNERS Upon adding the discord bot to the server, make sure it has permissions to send messages. That is about all it will need.

FOR PLAYERS

  • To create a character, use !createcharacter [Name]
  • You may want to do this in a PM to the bot, as the process can be a tad spammy.

From there, the bot will guide you on what you need to do to get set up. Again, this process best done in private, if multiple people are making characters in 1 chat, it might get confusing.

If you're using a custom class / race, you can enter "Custom" on those fields, but be aware that you'll be in charge of choosing your proficiencies and other relevant info to your character. Meaning manually setting the attribute fields using the proper commands. In other words, more work for you. The Custom settings are also a bit bugged, so I recommend picking a class similar to what you want, then changing the name.

Your character will be available on ANY server that the bot is present on. Your character progress is persistent and saved.
Due to character informaton being stored on my own server, You are limited to 3 characters per discord account. There is an option to donate to unlock unlimited characters. Again, this is a space issue. If more people donate, I can afford better hardware, which means bigger harddrives, which means I can afford to store all your character data.

Donator Benefits

  • Unlimited character slots
  • Editable-PDF download (for printing, or editing on desktop) - this feature is currently in testing, and available to all.
  • Use !donate for more information

More benefits to come.

By using this bot on your server, you should be made aware that the bot has access to see EVERY message you send in ANY channel that it has access to. All discord.py bots have this capability, and I am constantly updating my logging techniques to better handle bugs that occur. If you are uncomfortable with that, you have the option of not using this bot.

I do not distribute, sell, or use this information for anything other than debugging and reporting abuse to Discord.

Again, If you have any issues with this, don't use the bot, or contact me if you need clarification on what I'm logging.

В этой статье я подробно расскажу о том, как работать с библиотекой discord.js, создать своего Discord-бота, а также покажу несколько интересных и полезных команд.

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

Начало работы

Если вы уже знакомы с приведёнными ниже материалами, — смело можете пролистать этот раздел.

Для начала работы с кодом нам нужно установить среду разработки, это может быть:

Среда разработки выбирается по удобству использования и практичности, она у вас может быть любая, но мы рассмотрим её на примере Visual Studio Code, так как она является одной из самых приемлемых для новичков, а также для опытных программистов.

Для установки переходим по этой ссылке.



Выбираем свою операционную систему и запускаем скачивание.

Для создания бота мы используем среду выполнения node.js. Для её установки нам необходимо перейти на этот сайт.


На данный момент нас интересует версия долгосрочной поддержки (LTS), скачиваем её.

В Visual Studio Code присутствует возможность устанавливать расширения.
Для этого, кликните по отмеченной ниже иконке.


В открывшемся окне вписываем название название/идентификатор нужного нам расширения, после чего устанавливаем его.


Из полезных расширений могу отметить:

    Discord Presence — расширение, позволяющее отображать рабочую область и файл, в котором вы работаете в вашей игровой активности (функция работает только при использовании приложения Discord).

Создание бота

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

Здесь всё просто. Переходим на портал разработчиков и нажимаем на кнопку с надписью «New Application» — она находится в правом верхнем углу.

В открывшемся окне вписываем имя бота, после чего, нажимаем на кнопку с надписью «Create».


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

Теперь наша задача — воплотить бота в жизнь. Для этого переходим во вкладку «Bot».


Нажимаем на кнопку с надписью «Add Bot» и воплощаем бота в жизнь.

Поздравляю! Вы создали аккаунт для вашего бота. Теперь у него есть тег, токен, ник и иконка.

Подготовка к написанию кода

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

Первым делом создаём папку, после чего открываем её в VS Code (Файл > Открыть папку) / (Ctrl + K Ctrl + O)

Далее нам нужно открыть терминал (Терминал > Создать терминал) / (Ctrl + Shift + `)


Теперь мы должны создать файл с неким «описанием» нашего бота, сделаем это через терминал.

Вписываем данную строку в терминал и нажимаем Enter:


После каждой появившейся строки нажимаем Enter или вписываем свои значения.
Значения в этом файле можно будет изменить в любой момент.

Далее, мы должны поочерёдно вводить в терминал эти строки:

«Install» также можно сокращать в «I», но необязательно.

Итого, если вы следовали инструкциям и всё сделали правильно, в вашей папке должны были появиться 3 объекта:


Написание кода

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

Существует множество вариантов для его написания: используя один файл, два, несколько, и т.д

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

Но не волнуйтесь, весь код вам писать не придётся.

Для начала, нам нужно где-то хранить основные параметры и информацию о боте.

Мы можем сделать это двумя способами:

  1. Создать отдельный файл
  2. Записать всё в константы

Разберём хранение параметров в отдельном файле.

Итак, создаем файл config.json

Вставляем в него следующий код:


* Для получения токена зайдите на портал разработчиков, перейдите во вкладку «Bot» и скопируйте его.


* Самым распространённым среди разработчиков префиксом является !

Далее нам нужно создать файл bot.js и вставить в него данный код:


Теперь создаём файл comms.js, в нём будут сами команды.

В нём должен быть следующий код:


Чтобы добавить больше команд — просто объявляйте больше функций и добавляйте их в список, например:


И вот, мы вышли на финишную прямую!

Осталось всего ничего — запустить бота.

Для этого открываем терминал и вставляем в него следующую строку:



Готово! Бот запущен и вы можете им пользоваться, ура!

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

Перейдём во вкладку OAuth2, пролистаем чуть ниже, выберем «Bot» и отметим нужные боту привилегии.


Как вывести ссылку-приглашение в терминал, при запуске бота?

Существует два способа:

    Заранее отметить нужные привилегии.


Итоговый код должен быть таким:


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


* Все привилегии указываются заглавными буквами

Список доступных привилегий:

ADMINISTRATOR
CREATE_INSTANT_INVITE
KICK_MEMBERS
BAN_MEMBERS
MANAGE_CHANNELS
MANAGE_GUILD
ADD_REACTIONS
VIEW_AUDIT_LOG
PRIORITY_SPEAKER
STREAM
VIEW_CHANNEL
SEND_MESSAGES
SEND_TTS_MESSAGES
MANAGE_MESSAGES
EMBED_LINKS
ATTACH_FILES
READ_MESSAGE_HISTORY
MENTION_EVERYONE
USE_EXTERNAL_EMOJIS
VIEW_GUILD_INSIGHTS
CONNECT
SPEAK
MUTE_MEMBERS
DEAFEN_MEMBERS
MOVE_MEMBERS
USE_VAD
CHANGE_NICKNAME
MANAGE_NICKNAMES
MANAGE_ROLES
MANAGE_WEBHOOKS
MANAGE_EMOJIS

Полезные и интересные команды

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

Читайте также: