Как перезапустить бота в дискорде
Перейти к содержимому

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

  • автор:

Можно ли перезагрузить discord бота через терминал в vusial studio code? если можно как?

как перезагрузить бота дискорд через терминал в visual studio code?

  • Вопрос задан более двух лет назад
  • 1264 просмотра

Комментировать

Решения вопроса 1

Alexandre888

Александр @Alexandre888 Куратор тега Боты

Javascript-разработчик

CTRL + C в терминале.

Ответ написан более двух лет назад

Комментировать

Нравится 3 Комментировать

Ответы на вопрос 1

vabka

Токсичный шарпист

Как запускал так и перезапускай.

Ответ написан более двух лет назад

Нравится 1 2 комментария

fk14335 @fk14335 Автор вопроса

а если не пишутся символы? написал node bot.js и все больше не пишется

vabka

fk14335, открываешь новый терминал, пишешь kill по нужному процессу и он умер.
Или ctrl+C
Или просто закрываешь терминал

Ваш ответ на вопрос

Простой чат-бот для Discord на Python

discord_appdev

Сегодня рассмотрим пример создания простого чат-бота для Discord на языке Python 3 с использованием популярной библиотеки discord.py. Данный чат-бот по команде будет присылать стоимость криптовалюты биткоин (Bitcoin), которую будет узнавать с сайта coinmarketcap.com.

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

Что потребуется для из средств разработки:

  • Python 3.4.2+ (в Ubuntu 16.04 в коробке сразу идет Python 3.5.2)
  • Pip3 (менеджер пакетов для установки библиотек, в версиях Python 3.4+ входи в коробочную версию)
  • Любой текстовый редактор

В случае, если не установлен pip3, то установка в Ubuntu выглядит так:

$ sudo apt-get install python3-pip

Далее ставим главную библиотеку discord.py — обертка над API Discord для Python 3:

$ pip3 install discord.py

В Windows команда для терминала cmd выглядит также. Но если не настроены пути, то будет появляться ошибка. Тогда можно написать полный путь до pip3 примерно так:

C:\_ПУТЬ_ДО_ПАПКИ_PYTHON3\Tools\Scripts\pip3.exe install discord.py

Уже почти все сделано, осталось написать код. Создаем пустой файл с названием, например, discordpy-chatbot.py. Открываем любым текстовым редактором и вставляем туда код. На Github я привел программный код нашего чат-бота. Вот ссылка, ниже gist:

Осталось изменить значение переменной DISCORD_BOT_TOKEN, в которую необходимо сохранить токен вашего Discord-приложения (чат-бота). Чтобы узнать свой токен, необходимо перейти по адресу https://discordapp.com/developers/applications/me, выбрать в списке необходимый чат-бот или создать новый, и на странице настроек приложения в блоке «Bot» нажать на ссылку «click to reveal», где раскроется токен вашего приложения. Его и нужно занести в переменную DISCORD_BOT_TOKEN:

discord_bot_token

Все готово. Сохраняем файл со скриптом и запускаем чат-бот:

$ python3 discordpy-chatbot.py

После запуска на вашем сервере Discord, куда был добавлен чат-бот (а как добавлять своих ботов на свой сервер я писал в этой статье), можно писать команду:

!btcprice

на что бот вам любезно ответит текущей ценой за 1 биткоин:

discrod_btcprice

Python discord, discord.py, discordapp, howto, python. permalink. 58 545

20 thoughts on “ Простой чат-бот для Discord на Python ”

Я может чего-то не понимаю, но с какой стати мне IDLE пишет, что в модуле discord нет атрибута Client

Marcsus says:
Столкнулся с такой же ситуацией, удалось решить путем замены python 3.7 на python 3.6
Вячеслав says:
Как поставить бота на удаленный сервер, чтобы бот работал постоянно?
tetraquark says:

Достаточно запустить скрипт бота непосредственно на сервере, например, как описано в статье. В самом простом случае на сервере необходимо установить Python 3, pip3, библиотеку discord.py и просто запустить скрипт в фоновом режиме. Либо можно воспользоваться сервисами, например, Heroku, которые позволяют очень просто запускать пользовательские скрипты на своих серверах.

Антон says:

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

tetraquark says:

Здравствуйте!
К сожалению, я вряд ли смогу посоветовать что-то конкретное непосредственно для серверов Dont Starve Together. Но могу попытаться описать вариант общего решения.
Реализовать управление игровым серверным приложением (как и почти любым другим), на мой взгляд, вполне возможно с использованием дискорд бота, поскольку в данном случае он лишь выполняет функции для передачи данных/команд из дискорд чата в приложение на сервере, который как-то обрабатывает эти сообщения. Можно использовать Python библиотеку discord.py, которая используется в данной статье. Можно использовать любую другую библиотеку на другом языке. С ботом никаких других проблем быть не должно. Но бота реализовывать надо будет самостоятельно.
Но основная проблема это организация связи приложения дискорд бота с программой сервера игры (если на одной машине запущен и бот, и сервер игры). Если серверное ПО для Dont Starve Together позволяет выполнять процедуры средствами терминала (и скорее всего позволяет), то самый простой вариант это вызывать эти CLI команды из приложения. Если делать бота на Python, то можно использовать модули os.system или subprocess (стандартные Python модули). Как ими пользоваться — можно найти в сети и на русском языке. То есть схема простая:
1) В дискорд чат пользователь отправляет команду;
2) Приложение бота на удаленном сервере получает сообщение с командой и обрабатывает его;
3) Приложение бота определив, что за команда пришла, пытается связаться с сервером игры, например, используя модуль os.sysem, вызвая команды CLI.
4) После успешного выполнения/ошибки бот отправляет в чат дискорда результат.

DayShitTV says:
А кто будет модуль давать?
PoZZiTiVe says:

Здравствуйте. Хочу создать себе бота-оповесника,который будет писать сообщение о новом видео или стриме на Ютуб. Можете помочь?

Если Discord сервер, то можно при крутить веб-хук и все.
ahsotna says:

Выдает следующие ошибки, я как новичек в питоне не очень понимаю что они означают и как их решить.
C:\Users\mrgoo\AppData\Local\Programs\Python\Python37-32\python.exe C:/Users/mrgoo/.PyCharmCE2018.2/config/scratches/botdiscrod.py
Traceback (most recent call last):
File «C:/Users/mrgoo/.PyCharmCE2018.2/config/scratches/botdiscrod.py», line 1, in
import discord
File «C:\Users\mrgoo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\__init__.py», line 20, in
from .client import Client, AppInfo, ChannelPermissions
File «C:\Users\mrgoo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\client.py», line 38, in
from .state import ConnectionState
File «C:\Users\mrgoo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\state.py», line 36, in
from . import utils, compat
File «C:\Users\mrgoo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\compat.py», line 32
create_task = asyncio.async
^

tetraquark says:

Данная ошибка, скорее всего, возникает из-за вашей версии Python 3.7. Попробуйте использовать версии Python 3.4 — 3.6.

Запуск python ботов на хостинге

С появлением на нашем хостинге возможности запуска Фоновых процессов, процесс запуска различных ботов, таких как ботов для Telegram, Discord, FB и т.п значительно упростился.

Что такое Фоновые процессы и чем они помогают в запуске бота?

Как правило бот — это отдельный от сайта процесс, который должен работать 24/7, но у которого нет веб-интерфейса и который не должен быть доступен по http(s) снаружи по доменному имени. Но с другой стороны, бот, как и любое программное обеспечение, может содержать ошибки и при возникновении ошибок падать, поэтому очень важно в этом случае его автоматически перезапустить. Кроме того, бот пишет свои логи и к ним необходим прямой доступ, чтобы иметь возможность отслеживать его состояние. Ну и конечно, в случае если сервер хостинга будет перезагружен, либо контейнер для ваших сайтов на хостинге по какой-то причине остановлен, а затем запущен вновь, бот должен незамедлительно стартовать. Все эти вещи обеспечиваются Фоновыми процессами.

Создаем сайт

Фоновые процессы привязаны к сайтам, а сайты располагаются внутри контейнеров. Если нам требуется бот на python, первым делом необходимо создать сайт, который будет работать на python. Ознакомиться с процессом создания сайта на python (django) можно в этой статье.

Далее мы будем считать, что сайт создан и нужная версия python установлена и настроена, вы зашли на сервер по ssh и установили все необходимые базовые пакеты через pip install .

Создаем минимального Discord бота

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

cd site.ru/app pip install "discord>=2" 

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

import discord intents = discord.Intents.default() intents.message_content = True client = discord.Client(intents=intents) @client.event async def on_ready(): print(f'We have logged in as ') @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('your token here') 

Этот бот не делает ничего, кроме того, что если вы напишите сообщение в дискорд сервер, к которому подключен ваш бот, которое начинается с фразы “$hello”, бот ответит вам сообщением “Hello!”. В последней строке кода вместо ‘your token here’ вам необходимо прописать ваш токен для API Discord. Если в итоге файл создан и назван my_bot.py , то запустить его очень просто:

python my_bot.py 

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

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

Для этого переходим в раздел Хостинг, далее выбираем контейнер в котором был создан сайт, а в контейнере в списке сайтов выбираем тот сайт, в рамках которого будет запущен процесс бота. И переходим во вкладку “Фоновые процессы”:

Screenshot 2023-03-02 at 17.45.10.png

Теперь нажимаем на кнопку “Добавить процесс” и перед нами окрывается окно настроек:

Screenshot 2023-03-02 at 17.48.49.png

Всё что нам осталось сделать для запуска бота, это написать команду, которая будет его запускать. Команда будет выглядеть следующим образом:

cd ~/site.ru/app && python my_bot.py 

Если в коде бота не было ошибок и все остальное вы сделали по инструкции, после нажатия на кнопку “Добавить и запустить”, процесс бота будет запущен.

Доступ к логам бота

В окне, где мы подключены к серверу по ssh, мы запускаем следующую команду:

ls -l ~/site.ru/log 

Нам будет показан список папок с логами. Для фоновых процессов название папок имеет вид service-ID-runlog , где ID — уникальный идентификатор процесса, который для каждого процесса отображается в списке процессов в Личном кабинете. Теперь запустим команду:

tail -f ~/site.ru/log/service-ID-runlog/current 

И на экране будет отображаться лог бота, обновляемый в реальном времени.

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

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

  1. В личном кабинете в разделе фоновых процессов у нужного процесса нажмите на пункт меню “перезапустить”.
  2. В ssh консоли сервера запустите команду touch ~/site.ru/reload . Эта команда перезапустит ваш сайт и все фоновые процессы, привязанные к этому сайту.

Как управлять триггерами цепочек чат-бота

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

Содержание

Типы триггеров

Триггер – это действия подписчиков или команды, которые они присылают в сообщениях в чате.

В сервисе SendPulse есть три триггера по умолчанию:

Приветственная серия (Welcome message) Сообщение сразу после подписки на чат-бота.
Стандартный ответ (Standard reply) Ответ на сообщение подписчика, в котором нет ключевых слов.
Отписка от бота (Unsubscription from the bot) Сообщение подписчикам, если они отправляют команду /stop или /unsubscribe .

Вы также можете создать свой кастомный триггер, который запустит цепочку по получению ключевого слова, события A360 или по действиям в Instagram. Читайте подробнее в секции «Выберите тип триггера».

Как создать новый триггер

Нажмите кнопку «Создать новый триггер» (Create a new trigger).

Выберите тип триггера

Выберите событие и введите ключевое слово, которое запустит цепочку.

Вы можете создать триггер со следующими событиям:

Выберите для каких публикаций запускать триггер — для всех или для определенной.

Также вы можете задать ключевое слово*, после которого запустится цепочка. Для этого включите «Указанный текст комментария» (Specific comment text) и введите ключевое слово. Если нужно запускать цепочку по любому комментарию к публикации, активируйте опцию «Любой текст» (Any text).

*Сервис распознает отдельные слова и словосочетания как команды, к примеру: Добрый день , цена , какая, цена , сколько стоит . Максимальный размер ключевого слова – 32 символа.

Распознавание ключевых слов не зависит от регистра, то есть сервис одинаково определяет стоимость , Стоимость или СТОИМОСТЬ .

Если вы активируете опцию «Совпадает с» (Matches with) и подписчик отправит ключевое слово в предложении или сообщение будет содержать несколько ключевых слов, чат-бот ответит автоматическим уточнением.

Например, у вас триггер с ключевым словом стоимость . Подписчик отправляет сообщение Добрый день, какая стоимость? в чат-бот. Чат-бот отвечает запросом на уточнение, если вы активировали опцию «Совпадает с» (Matches with), где слово стоимость представлено в форме быстрого ответа. Подписчик выбирает интересующую его команду и запускает соответствующую цепочку сообщений.

Если вы активируете опцию «Содержит» (Contains), сразу сработает цепочка, связанная с первым указанным ключевым словом. Также доступна опция отключения отправки уточнения в настройках бота.

Выставьте повторный вызов

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

К примеру, вы создаете триггер с ключевым словом цена и повторным вызовом «5 минут». Если подписчик отправляет сообщение с ключевым словом «цена» в чат-бот, а через две минуты отправляет еще одно сообщение с той же командой, цепочка, связанная с этим триггером, запустится один раз.

Чтобы сохранить триггер, нажмите «Добавить» (Add).

Сервис не дает возможности создавать несколько триггеров с одинаковыми ключевыми словами.

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

Как редактировать существующий триггер

Выберите нужный триггер на панели и нажмите «Редактировать триггер» (Edit the trigger).

Сделайте необходимые изменения и нажмите «Сохранить» (Save).

Как удалить триггер

Выберите триггер на панели, нажмите «Редактировать триггер» (Edit the trigger) > «Удалить триггер» (Delete).

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

Как настроить подсказки от бота

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

Под кнопками быстрого ответа отправится еще сообщение с индикатором ввода в виде эмодзи робота — ожидание сообщения от пользователя. Чтобы изменить этот индикатор, перейдите в настройки чат-бота во вкладку «Общие» и в поле «Индикатор подсказок бота» выберите эмодзи или добавьте текст.

Чтобы отключить подсказки, снимите галочку с опции «Показать подсказки от бота при неточном соответствии в сообщении».

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *