Гайд Как создавать Discord бота

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,769
11,213
Неплохой гайд. Ты молодец, продолжай в том же духе! ✌️
согласен, но было бы лучше если бы гайд был по написанию бота на нормальном языке, а не на медленном говне с ублюдским синтаксисом
 
  • Нравится
Реакции: Mamashin

Mamashin

Известный
971
525
согласен, но было бы лучше если бы гайд был по написанию бота на нормальном языке, а не на медленном говне с ублюдским синтаксисом
Ну у каждого свои вкусы и интересы, кому то легко даётся Python и они бегут писать на нём всё что только можно, а кто то ударяется в Lua и при этом не проявляет интереса к какому-нибудь забытому всеми Ruby.
На мой взгляд - Python неплохой язык, современный, но есть у него свои конкуренты.
 

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,769
11,213
Ну у каждого свои вкусы и интересы, кому то легко даётся Python и они бегут писать на нём всё что только можно
петухон почти всем дается легко. На счет вкусов согласен, но это не отменяет того факта что петухон медленнее чем тот же луа
 
  • Bug
  • Нравится
Реакции: Fott и riverya4life

Mamashin

Известный
971
525
петухон почти всем дается легко. На счет вкусов согласен, но это не отменяет того факта что петухон медленнее чем тот же луа
Это смотря с какой стороны посмотреть на LUA, на данном форуме для 90% ежедневной аудитории - Lua это то, на чём пишут "скрипты" & "программы" для sa:mp, в тоже время Lua это обычный скриптовый язык которому просто нашли применение и интегрировали в moonloader.
Но лично для меня, Python хорош во всем, он мне нравится, но писать на нём после упорной работы на C/Rust/Java - просто невозможно в моём случаи.
Кстати Python еще дано приписали ярлык как язык для простых юнитов и начинающих юных программистов/разработчиков и инженеров
 

riverya4life

Известный
Автор темы
393
170
согласен, но было бы лучше если бы гайд был по написанию бота на нормальном языке, а не на медленном говне с ублюдским синтаксисом
Большинство колег по цеху мне советуют своего бота переписать с питухона на js там хотя бы, но 4k~ строк кода в падлу
 

triazov

Активный
250
57
Таких гайдов миллион, смысл? Первое. Второе зайти на оффициальный канал disnake RU в дс не судьба там таких гайдов от 0 до 100
 
  • Bug
Реакции: riverya4life и Mamashin

Raizyxa DEV

Новичок
2
0
согласен, но было бы лучше если бы гайд был по написанию бота на нормальном языке, а не на медленном говне с ублюдским синтаксисом
Любой язык - ублюдский, если смотришь на него сверху вниз. Вспоминать про Lua вообще не хочется, язык даже в лидеры не входит и где он там потерялся, можно и не думать. С++ тоже ублюдский, если забываешь про ; и прочие особенности синтаксиса, про ебать Паскаль и Кумир я вообще молчу. Но языки хороши там, где они нужны. А если тебе нужна скорость, то принимай таблетки. Делай костыли в связке с Си, чтобы быть извращенцем уровня Бога, я уже блять незнаю. К тому же если руки не из жопы, то любой процесс в питоне можно ускорить тем же numpy или multiproccess, зависит что тебе надо. Поэтому, старичок, дальше сиди и удручайся в LUA.
 

Fott

Простреленный
3,431
2,270
дальше сиди и удручайся в LUA
С его псевдоасинхронностью и не забудь про лужу, которая все еще для версии луа 5.1, когда еще в 2020 вышла 5.4. И разраб не собирается ничего делать 🇺🇦
1706365635773.png
 
Последнее редактирование:

why ega

РП игрок
Модератор
2,539
2,233
если забываешь про ; и прочие особенности синтаксиса
Именно на этапе парсинга компилятор выявляет синтаксические ошибки в программе. А точку с запятой он не ставит из-за того, что это может привести не к тому результату, который ожидает пользователь. Например в питоне не получится написать что-то, что может быть воспринято как одно целое. В том же время, в C++ точка с запятой служит средством разделения команд, чтобы в итоге некорректное выражение слилось в одно целое.
 

Fott

Простреленный
3,431
2,270
А вот жс( который являеется си-подобным языком, в отлии от питона) научился сам ставить ;
1706371028881.png
 

Gloryy

Новичок
9
2
Доброго времени форумчане БластХак!
Сегодня я расскажу и покажу, как создать своего первого бота в Discord!
Данный гайд посвящается всем, кто знает базу Python (кто не знает - иди учи питон)


Первый этап - Создание приложения.
Для начала вы должны создать приложение бота, для этого выполните все действия по порядку:
  1. Перейдите на страницу https://discord.com/developers/applications
  2. Нажмите на New Application.Посмотреть вложение 197572
  3. Введите название приложения, прочитайте Developer Terms of Service (https://discord.com/developers/docs/policies-and-agreements/developer-terms-of-service) и Developer Policy (https://discord.com/developers/docs/policies-and-agreements/developer-policy) и также, я советую вам ознакомиться с https://discord.com/tos, после всего этого нажмите на кнопку Create.
    Посмотреть вложение 197573
Примечание: Вы можете изменить название приложения, описание, теги, также вы можете получить айди бота и его Public Key. Ниже вы можете увидеть ещё 4 галочки, но там вы и сами все поймете.

Посмотреть вложение 197574
  1. Перейдите во вкладку Bot.
    Посмотреть вложение 197577
  2. Нажмите Add Bot и подтвердите это действие.
    Посмотреть вложение 197581
! Если у вас включена двухфакторная аутентификация, вы должны ввести 6-значный код. Поздравляю! Ваше приложение создано абсолютно успешно.

Второй этап - Запуск нашего бота.
Для того чтобы получить токен бота, нажмите на кнопку View Token.
Посмотреть вложение 197580

Далее, напишем первый код!

Для удобства буду использовать библиотеку disnake (discord.py fork), но перед написанием кода мы должны создать файл с расширением .py!
Если создали файл - поздравляю, можем приступать к написанию кода!
Python:
# Импорт библиотеки disnake.
import disnake
from disnake.ext import commands

bot = commands.Bot(command_prefix="!") # Создание экземляра класса commands.Bot, в документации вы можете найти какие аргументы принимает этот класс.
# С помощью command_prefix задаём префикс нашему боту, к примеру здесь будет префикс !

# Когда бот запущен, то будет вызван ивент.
@bot.event
async def on_ready():
    print("Ваш бот готов!")

# Запуск дискорд бота, как найти токен написано в гайде.
bot.run("YOUR_DISCORD_BOT_TOKEN")

Дальше запускаем нашего бота. Можно запускать как через cmd, так и через созданный bat файл.
Готово!

Так-же приведу пример команды !ping, которая будет нам отвечать "Понг!"

Здесь мы используем уже декоратор @bot.command()
@bot.command()
принимает в себя аргументы, а именно - name (имя команды, можно сделать команду на русском языке), description (описание команды, больше подходит для команд косой черты) и usage (пример использования команды).

Python:
@bot.command(name = "ping", description = "Тест команда", usage = "ping") # в name задаём навзание команды
async def ping(ctx): # передаём аргумент ctx (контекст)
    await ctx.reply("Понг!") # отвечаем пользователю вызвавшему команду.

Теперь по команде !ping бот будет отвечать вам Понг!

UPD 30.04.
Сейчас покажу как создавать слеш команды (команды косой черты)!
Для этого нам нужно использовать декоратор @bot.slash_command()
Он принимает все те же аргументы, что и текстовые команды.
Пример команды !ping, но уже на слешах:
Python:
@bot.slash_command(name = "ping", description = "Тест команда", usage = "ping")
async def ping(inter): # теперь мы передаём в аргументе не ctx, а inter | interaction (интеракция)
    await inter.response.send_message("Понг!") # отправляем сообщение

Небольшое пояснение про Interaction (кратко inter)
Что вообще такое ваш Interaction и с чем его едят?

Interaction в переводе с английского означает взаимодействие.
Это, по сути, вебхуки под капотом (и для ответа на взаимодействие не требуется токен бота). Таким образом, у вас может быть приложение, предназначенное только для взаимодействия, к которому могут получить доступ пользователи, не имея пользователя-бота в гильдии.
Бот должен быть добавлен с разрешением applications.commands, чтобы создавать слэш команды на сервере. Это рекомендуется к добавлению этого разрешение к приглашениям вашего бота.

Итоговый код нашего бота:
Python:
# Импорт библиотеки disnake.
import disnake
from disnake.ext import commands

bot = commands.Bot(command_prefix="!") # Создание экземляра класса commands.Bot, в документации вы можете найти какие аргументы принимает этот класс.
# С помощью command_prefix задаём префикс нашему боту, к примеру здесь будет префикс !

# Когда бот запущен, то будет вызван ивент.
@bot.event
async def on_ready():
    print("Ваш бот готов!")

# Наша первая команда
@bot.command(name = "ping", description = "Тест команда", usage = "ping") # в name задаём навзание команды
async def ping(ctx): # передаём аргумент ctx (контекст)
    await ctx.reply("Понг!") # отвечаем пользователю вызвавшему команду.

# Наша слеш команда
@bot.slash_command(name = "ping", description = "Тест команда", usage = "ping")
async def ping(inter): # теперь мы передаём в аргументе не ctx, а inter | interaction (интеракция)
    await inter.response.send_message("Понг!") # отправляем сообщение

# Запуск дискорд бота, как найти токен написано в гайде.
bot.run("YOUR_DISCORD_BOT_TOKEN")

Спасибо за внимание, возможно в будущем ИМЕННО ТЫ станешь успешным разработчиком (нет)
Вообще-то, такой код не выдаст ответа на команды, из-за отсутствия специальных намерений(в этом случае, полного их отсутствия)🤓🤓🤓