Ответы: Как писать от имени бота в дискорде, и с каким ботом это работает?…

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

image

Правила создания своего бота в Дискорде

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

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

image

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

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

  1. Заходим в учетную запись. Для этого потребуется ввести логин и пароль;
  2. Далее активируем клавишу «New Application»;
  3. Перед вами раскроется небольшое меню;
  4. Необходимо напечатать название бота, который хотите активировать;
  5. Не забудьте указать в настройках «Bot»;
  6. Кликаем по клавише «Бот» и нажимаем копировать;
  7. После выполнения всех указанных действий нужно будет скачать программу-утилиту для Windows;
  8. Скачав и точно убедившись, что этот формат именно то, что вам нужно, можно приступать к процедуре установки программы;
  9. После установки, находим вкладку «View», на которой нас интересует срока «Reload»;
  10. Вводим скопированный ранее токен;
  11. После этого необходимо заново осуществить вход в программу, пригласив при этом созданного робота на сервер.

Какие могут возникнуть проблемы

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

  • Запуск программы-утилиты через сторонний браузер поможет в случаях, когда мессенджер Дискорд не может начать работу. Также не лишним будет запустить проверку на антивирус устройства;
  • В случаях зависания мессенджера – может помочь стандартная перезагрузка устройства. Либо перед отправкой сообщения в чат, нужно скопировать id канала, а уже затем отправлять текст.

Вопрос задан 2 года 2 месяца назад Изменён 7 месяцев назад Просмотрен 6k раз 2

import discord import asyncio  client = discord.Client()  async def greatSender():      channel = discord.Object(id=input('channel id'))     await client.send_message(channel, input('message'))  async def on_ready():     print( 'Bot ready' )     greatSender() token = open('token.txt' , 'r').readline()  client.run(token) 

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

Улучшить вопрос

1 ответ 1

Сброс на вариант по умолчанию 1

Вот решение проблемы (сначала вводится ID текстового канала, затем отсылается сообщение после ввода сообщения в консоль):

Улучшить ответ

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.

lang-py

Всем привет, сегодня мы напишем Discord-бота на Python и discord.py + бонусом посмотрим на примеры ботов. Приступим 🙂

Перед работой

Перед тем, как начать, вам нужны:

  1. Python 3;
  2. discord.py;
  3. Discord-аккаунт и свой сервер.

Для установки discord.py воспользуйтесь пакетным менеджером:

pip3 install discord.py

Создаём нашего бота

Перейдите на Developer Portal и нажмите на New application.

Вы создали своё приложение, на странице приложение перейдите в Bot >> Add Bot и создайте своего Discord-бота.

Сохраните токен бота! Дальше он нам понадобится!

Если всё прошло успешно, поздравляю, половина дела сделана 😀

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

Теперь можно добавить бота на сервер.

Перейдите в OAuth2 >> URL Generator, в Scopes выбираем Bot и ниже — права бота, копируем сгенерированный URL. Вставляем в браузер, и добавляем на наш сервер.

Эхо-бот

Напишем традиционного эхо-бота, и разберём каждую строчку кода.

Код:

import discord  from discord.ext import commands    config = {      'token': 'your-token',      'prefix': 'prefix',  }    bot = commands.Bot(command_prefix=config['prefix'])    @bot.event  async def on_message(ctx):      if ctx.author != bot.user:          await ctx.reply(ctx.content)    bot.run(config['token'])

Пример работы:

Разбор:

import discord  from discord.ext import commands

Нужные нам импорты.

config = {      'token': 'your-token',      'prefix': 'prefix',  }

Вспомогательный словарь config в котором храним токен и префикс команд (далее расскажу зачем нужен префикс команд).

bot = commands.Bot(command_prefix=config['prefix'])

Создаём нашего бота, в аргументе передаём префикс.

@bot.event

Декоратор, предназначенный для обработки событий, подробнее здесь.

async def on_message(ctx):

Создаём асинхронную функцию, с параметром ctx, представляет из себя сообщение.

if ctx.author != bot.user:

Проверка, не является ли автор сообщения нашим Discord-ботом. Дело в том, что если бот отправит сообщение, это будет новым событием, и тогда получается цикл.

await ctx.reply(ctx.content)

Отвечаем на сообщение (ctx.reply), в аргументы передаём сообщение (ctx.content).

bot.run(config['token'])

Запускаем нашего бота, в аргументы передаём токен бота.

Старший разработчик в команду IaaS (Cloud) tproger.ru Вакансии на tproger.ru

Надеюсь вы разобрались с кодом, и мы можем переходить далее.

Обработка команд

Перед тем, как обрабатывать команды, нам пригодится наш префикс.

Рассмотрим код:

import random  import discord  from discord.ext import commands    config = {      'token': 'your-token',      'prefix': '$',  }    bot = commands.Bot(command_prefix=config['prefix'])    @bot.command()  async def rand(ctx, *arg):      await ctx.reply(random.randint(0, 100))    bot.run(config['token'])

Результат работы:

Разбор:

@bot.command()

Декоратор обработки команд

async def rand(ctx, *arg):

Асинхронная функция rand

await ctx.reply(random.randint(0, 100))

Отвечаем на сообщение, в аргументы передаём случайное число от 0 до 100

Бонус

Проверка роли:

import random  import discord  from discord.ext import commands    config = {      'token': 'your-token',      'prefix': '$',  }    bot = commands.Bot(command_prefix=config['prefix'])    @bot.command()  @commands.has_role("Хозяин")  async def rand(ctx, *arg):      await ctx.reply(random.randint(0, 100))    bot.run(config['token'])

Выгнать пользователя

import discord  from discord.ext import commands    config = {      'token': 'your-token',      'prefix': '$',  }    bot = commands.Bot(command_prefix=config['prefix'])    @bot.command()  async def kick(ctx, user : discord.User(), *arg, reason='Причина не указана'):      await bot.kick(user)      await ctx.send('Пользователь {user.name} был изгнан по причине "{reason}"')    bot.run(config['token'])

22.12.2020 в 21:12

Из этого туториала Вы узнаете, как полностью создать собственного бота Discord в облаке.

Вам не нужно ничего устанавливать на свой компьютер, и вам не нужно ничего платить за размещение своего бота.

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

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

Чтобы работать с библиотекой Python и API Discord, мы должны сначала создать учетную запись Discord Bot.

Вот шаг к созданию учетной записи Discord Bot.

1. Убедитесь, что вы вошли на сайт Discord.

2. Перейдите на страницу приложения.

3. Щелкните кнопку «Новое приложение».

4. Дайте приложению имя и нажмите «Создать».

5. Перейдите на вкладку «Бот» и нажмите «Добавить бота». Вам нужно будет подтвердить действие, нажав «Yes, do it!»

Оставьте настройки по умолчанию для Public Bot и Require OAuth2 Code Grant.

Ваш бот создан. Следующим шагом будет копирование токена.

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

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

Как пригласить вашего бота присоединиться к серверу

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

Перейдите на вкладку «OAuth2». Затем выберите «бот» в разделе «scopes».

Теперь выберите нужные разрешения для бота. Наш бот будет в основном использовать текстовые сообщения, поэтому нам не нужно много разрешений. Вам может потребоваться больше, в зависимости от того, что вы хотите, чтобы ваш бот делал. Будьте осторожны с разрешением «Администратор».

После выбора соответствующих разрешений нажмите кнопку «Copy» над разрешениями. Это скопирует URL-адрес, который можно использовать для добавления бота на сервер.

Вставьте URL-адрес в свой браузер, выберите сервер, на который будет приглашен бот, и нажмите «Авторизовать».

Чтобы добавить бота, вашей учетной записи необходимы разрешения «Управление сервером».

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

Как написать код для базового бота Discord с помощью библиотеки discord.py

Мы будем использовать библиотеку Python discord.py, чтобы написать код для бота. discord.py – это оболочка API для Discord, которая упрощает создание бота Discord на Python.

Как создать реплику и установить disocrd.py

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

Создайте новый Repl и выберите «Python» в качестве языка.

Чтобы использовать библиотеку discord.py, просто напишите import discord  вверху main.py. Repl.it автоматически установит эту зависимость, когда вы нажмете кнопку «Run».

Если вы предпочитаете кодировать бота локально, вы можете использовать эту команду в MacOS для установки discord.py:

python3 -m pip install -U discord.py

Возможно, вам придется использовать pip3 вместо pip.

Если вы используете Windows, вы должны вместо этого использовать следующую строку:

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

Как настроить события Discord для вашего бота

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

Сделаем бота, который отвечает на конкретное сообщение. Этот простой код бота вместе с объяснением кода взят из документации discord.py. Позже мы добавим в бота дополнительные функции.

Добавьте этот код в main.py. (Вы можете назвать файл как-нибудь иначе, только не discord.py.) Я вскоре объясню, что делает весь этот код.

import discord import os  client = discord.Client()  @client.event async def on_ready():     print('We have logged in as {0.user}'.format(client))  @client.event async 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')) 

Когда вы создали своего пользователя-бота в Discord, вы скопировали токен. Теперь мы собираемся создать файл .env для хранения токена. Если вы запускаете свой код локально, вам не нужен файл .env. Просто замените os.getenv('TOKEN') токеном.

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

Поэтому, если вы разрабатываете на Repl.it, включайте в файл .env только личную информацию, такую ​​как токены или ключи.

Нажмите кнопку «Добавить файл» и создайте файл с именем .env.

Внутри файла добавьте следующую строку, включая ваш фактический токен, который вы скопировали ранее:

TOKEN=[paste token here] 

Теперь давайте рассмотрим, что делает каждая строка в коде вашего бота Discord.

  1. Первая строка импортирует библиотеку discord.py.
  2. Вторая строка импортирует библиотеку os, но она используется только для получения переменной TOKEN из файла .env. Если вы не используете .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.

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

Как запустить бота

Теперь нажмите кнопку запуска вверху, чтобы запустить своего бота в repl.it.

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

В Windows:

py -3 main.py

В других системах:

python3 main.py

Теперь перейдите в свою комнату в Discord и введите «$hello». Ваш бот должен ответить «Hello!».

Как улучшить бота

Теперь, когда у нас есть базовый бот, мы его улучшим. Не зря он называется «Encourage Bot».

Этот бот будет отвечать сообщением ‘Hello!’ всякий раз, когда кто-то отправляет сообщение, содержащее грустное или удручающее слово.

Любой желающий сможет добавить ободряющие сообщения для использования бота, а отправленные пользователем сообщения будут храниться в базе данных Repl.it.

Бот также вернет случайную вдохновляющую цитату из API, когда кто-то наберет в чате сообщение «$inspire».

Мы начнем с добавления функции «$inspire».

Как добавить в бота вдохновляющие цитаты

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

Вот обновленный код. После кода я объясню новые части.

import discord import os import requests import 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.event async def on_ready():   print('We have logged in as {0.user}'.format(client))  @client.event async 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, и модуль json упрощает работу с возвращенными данными.

Функция get_quote() очень проста. Во-первых, она использует модуль запросов для запроса данных из URL-адреса API. API возвращает случайную вдохновляющую цитату. Эту функцию можно легко переписать для получения котировок из другого API, если текущий перестанет работать.

Затем внутри функции мы используем json.loads() для преобразования ответа API в JSON. Методом проб и ошибок я понял, как перевести цитату из 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!" ] 

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

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

Теперь нам нужно обновить нашего бота, чтобы он использовал два созданных нами списка. Во-первых, импортируйте модуль 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)) 

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

Источник:

  • How to Create a Discord Bot for Free with Python – Full Tutorial

#Python

1 августа, 00:57

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

Создание собственно бота 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 – это уникальный ключ доступа к нему. Комбинацию стоит передавать только другим разработчикам, которым вы доверяете, а иначе лучше держать при себе.

image

В случае, если кто-то все-таки узнает токен, можно нажать 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 в конце названия документа.

image

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

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!

image

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

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

Для примера научим бота отвечать сообщением 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» по сети бесплатно

Оцените статью
Рейтинг автора
4,8
Материал подготовил
Егор Новиков
Наш эксперт
Написано статей
127
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий