Мини-игры
Бот предоставляет несколько мини-игр, чтобы вы могли вместе или в одиночку весело провести время!
Аудит-лог
Если вам недостаточно обычного аудит-лога, то в Джегги найдется модуль для настройки своего аудит-лога.
Роли по реакции
Вы можете установить выдачу ролей по нажатию на реакцию для облегчения пребывания на сервере!
Модерация
У бота есть встроенные команды для повышения удобства и продуктивности ваших модераторов!
Голосования
С помощью Джегги вы сможете с лёгкостью устраивать различные голосования на вашем сервере!
Настройки
Кастомизация и настройка позволит вам по-своему оформить бота и включить необходимые функции.
Каналы для команд
Вы можете добавить каналы для команд, чтобы Джегги могла писать в необходимые вам каналы!
Отключение команд
Вы можете оставить только необходимые вам модули или команды для концентрации внимания участников.
Информация
Джегги может дать вам доступ к разнообразному списку информационных команд, в том числе: эмодзи, приглашении, пользователе, роли.
Поиск двойников
С помощью Джегги вы можете поискать пользователей-двойников с вашим дискриминатором!
Переводчик
Вы можете в любой момент, не открывая ничего лишнего, перевести свой текст прямо через бота!
Фановые команды
Джегги поможет обработать и ставить разные фильтры на свои картинки с помощью фановых команд!
Ролевые команды
С помощью Джегги вы можете проявлять свои эмоции, используя команды из ролевых игр!
Эмбед конструктор
Присутствует конструктор для создания и оформления своих красивых эмбедов.
Какие преимущества?
Многофункциональность
Джегги способна с лёгкостью заменить многих ботов, объединяя функционал в себе.
Стабильность
Мы постоянно следим за стабильностью бота и стараемся обеспечивать бесперебойную работу.
Поддержка
Интересующие вопросы по проекту вы можете узнать на нашем сервере поддержки.
Прокачайте свой сервер, пригласите JeggyBot!
Простой чат-бот для Discord на Python

Сегодня рассмотрим пример создания простого чат-бота для 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:

Все готово. Сохраняем файл со скриптом и запускаем чат-бот:
$ python3 discordpy-chatbot.py
После запуска на вашем сервере Discord, куда был добавлен чат-бот (а как добавлять своих ботов на свой сервер я писал в этой статье), можно писать команду:
!btcprice
на что бот вам любезно ответит текущей ценой за 1 биткоин:

![]()
Python discord, discord.py, discordapp, howto, python. permalink. 58 843
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.
Quick-start Telegram Bot
If you’ve ever used an online forum, you may have seen that there are sometimes ways to post messages other than doing it straight on the forum, like posting by email.
In this tutorial, we’ll build a public message board and instead of users posting messages directly on the site, they’ll send them to a Telegram bot.
The messages will simply contain the message text, but we’ll provide further information on how to use other data, such as the usernames of users. We will leave it as an exercise for you to expand the functionality.
Prerequisites
To follow along in this tutorial:
- You should be familiar with basic Python programming.
- You will need to have Telegram downloaded, and an account.
- You will also need a Replit account, so create one now if you haven’t already.
It would be helpful if you are familiar with the Replit database, but it’s not a necessity.
Registering a Bot
We need to register our bot on Telegram to generate the credentials we’ll use to connect to the Telegram API. Each bot requires a user account to be responsible for it. This can be done using Telegram’s official management bot called the «BotFather».
To do this, start by signing into your Telegram client and searching for «@bot» in the chat search. Be sure to select the verified account (the one with the checkmark beside it), otherwise we may end up talking to someone impersonating the official BotFather.

To activate the BotFather, click on «start».

We can send BotFather the command «/newbot» to begin the bot creation workflow.
It will ask us for:
- The name of the bot which will be displayed on the top of the new bot’s chat, for example, «Replit Quick-start Tutorial».
- The username, which will be used to reference the bot uniquely, for example, «@replit_tutorialbot».
Note: It is useful to have a short username to make it easier for users to type it out – especially if you plan on adding an inline mode.

Once we have answered all the questions, the BotFather will send us our authentication token which will look something like this: 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw .
Note that the whole string (the colon and both strings on either side of it) is the token.
Making a Bot Interface
We can now begin writing the part of the program that handles requests from Telegram. Create a new repl and select Python from the language dropdown.

Our bot needs to interact with Telegram. We will need to access the Telegram REST API. There are many ways of doing this, but for the sake of this tutorial, we’ll use a convenience library that wraps around the API.
Before we can go any further, we need to make our token accessible for our bot to use later on. Create a TOKEN environment variable by clicking the lock icon in the sidebar as shown below, and paste your bot token that you noted earlier, something like 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw :

This will ensure that our token is available as an environment variable and that it cannot be accessed by people publicly viewing the repl.
Creating a barebones bot
Now that we’re all set up, we can get coding! We will start with the following in our main.py file:
import os from telegram import Update #upm package(python-telegram-bot) from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext #upm package(python-telegram-bot) def help_command(update: Update, context: CallbackContext) -> None: htext = ''' Welcome Send a message to store it. Send /fetch to retrieve the most recent message''' update.message.reply_text(htext) def main(): updater = Updater(os.getenv("TOKEN")) dispatcher = updater.dispatcher dispatcher.add_handler(CommandHandler("start", help_command)) dispatcher.add_handler(CommandHandler("help", help_command)) updater.start_polling() updater.idle() if __name__ == '__main__': main()
At the top, we import os so that we can get our token from the environment variable.
We then import classes from the Telegram library.
The comments starting with #upm are not optional. They are used by Replit to download the correct package. It is not needed in general, but it is needed here because there are a lot of similar Telegram libraries.
The help_command function is run whenever the user sends us a «/start» or «/help» command. «/start» is also automatically run when a new user joins your bot (like we did earlier with the BotFather). The bot knows to use this function because we tell it later in the main function’s body.
The main function initialises an updater for us, using our token.
updater = Updater(os.getenv("TOKEN"))
The updater is the class that will continuously check Telegram for new messages for our bot.
When the updater gets a new message, it hands it over to the dispatcher. The dispatcher checks if we have an appropriate handler for the message. As mentioned above, we define ours to handle the commands «/start» and «/help». We do that with the add_handler function, like this:
dispatcher.add_handler(CommandHandler("start", help_command))
Saved searches
Use saved searches to filter your results more quickly
Cancel Create saved search
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. You switched accounts on another tab or window. Reload to refresh your session.
sergree / DolboNet Public
Русскоязычный чат-бот для Discord на архитектуре Transformer
License
sergree/DolboNet
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
- Local
- Codespaces
HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
add88eb Jan 14, 2023
Git stats
Files
Failed to load latest commit information.
Latest commit message
Commit time
README.md
Dear English speaking users, unfortunately this project is only in Russian at the moment. Sorry for the inconvenience.

Мы рады представить Вам нашу разработку — Русскоязычный чат-бот для Discord на архитектуре Transformer.
Нейронная сеть обучена на 36M+ публично доступных сообщениях наиболее популярных русскоязычных серверов Discord в течение одной эпохи (5 суток на GTX 1080). Обучение проходило по принципу: какое сообщение вероятнее всего будет отправлено после 10-ти предыдущих на уровне character trigram embeddings.

Данный бот не использует готовую базу данных сообщений, а генерирует новые уникальные сообщения, реализуя концепцию seq2seq на архитектуре Transformer. Основа сети взята из этого руководства по TensorFlow 2.

Эта модель была актуальна в 2019 году, но довольно быстро устарела. Вы можете найти что-то более качественное и современное, проследовав сюда.
Поехали!

Windows 10 64-bit
Протестировано на 2 x 2.6 ГГц CPU + 4 ГБ RAM.

- Установите Python 3.8 64-bit
- При установке Python 3.8 64-bit должны стоять галочки Install launcher for all users (recommended) и Add Python 3.8 to PATH
- Установите Git
- Установите Visual C++ Redistributable — необходим для scipy
- Откройте Git Bash, щелкнув правой кнопкой мыши по пустому месту внутри папки (например, Мои документы) и выбрав Git Bash Here
- Скачайте репозиторий: git clone https://github.com/sergree/DolboNet
- Перейдите в папку: cd DolboNet
- Выполните pip install -r requirements.txt в появившемся окне
- Получите токен вашего бота — инструкция
- Отредактируйте файл конфигурации config.py , вставив токен бота в token = «. «
- ⚠️ Включите Message Content Intent в настройках аккаунта бота
- И наконец, запустите бота: python bot.py
- Бот будет загружаться 5-10 минут
Бот заработает только на 64-разрядной версии Windows и Python.
Ubuntu 20.04 LTS
Протестировано на 2 x 2.6 ГГц CPU + 2 ГБ RAM.

- Скачайте репозиторий: git clone https://github.com/sergree/DolboNet
- Перейдите в папку: cd DolboNet
- Если ещё не установлен pip3 , то установите его: sudo apt install python3-pip
- Установите зависимости: pip3 install -r requirements.txt
- Получите токен вашего бота — инструкция
- Отредактируйте файл конфигурации: nano config.py , вставив токен бота в token = «. «
- ⚠️ Включите Message Content Intent в настройках аккаунта бота
- И наконец, запустите бота: python3 bot.py
- Бот будет загружаться 5-10 минут
Если на машине присутствует видеокарта NVIDIA, то Вы можете запустить бота используя CUDA, что даст прирост в скорости работы.
- Удалите tensorflow , если успели установить зависимости: pip uninstall tensorflow
- Установите CUDA® Toolkit и cuDNN SDK — инструкция
- Установите pip install tensorflow-gpu>=2.3.1 или pip install -r requirements_gpu.txt

⚠️ Не советуем настраивать поддержку GPU, если Вы делаете это впервые и у Вас нет желания потратить на процесс установки весь вечер ⚠️
В файле config.py можно отредактировать некоторые параметры, чтобы изменить характер и поведение бота:
Для удобства экспериментирования присутствует команда !temp значение , которую можно отправлять в Discord, чтобы редактировать это значение на ходу. Команда работает только у пользователей с привилегией Администратор.
- mention_prob — вероятность того, что бот ответит на сообщение, в котором его упомянули. Может принимать значения от 0 до 1 . По умолчанию: 1 , т.е. 100%
- no_mention_prob — вероятность того, что бот ответит на сообщение, в котором его не упоминали. Может принимать значения от 0 до 1 . По умолчанию: 0.2 , т.е. 20%
- command_temperature_change — команда изменения температуры, если не нравится !temp значение
- use_delay — эмуляция человеческой скорости печати на клавиатуре, по-умолчанию False , т.к. на CPU процесс генерации и так не быстрый
- discord_game_name — статус бота в Discord
Остальные параметры лучше не редактировать.

☕ Если Вы заинтересованы в развитии проекта, Вы можете купить мне кофе. ☕
Спасибо!
У меня половина сервера таких долбонетов, зачем нужен ещё один?
- Он может помогать в модерации:

- Иногда даже очень хорошо:


- Делится свежими новостями:

- А ещё он не даст заскучать:

- Ну и, конечно же, у него отличный вкус:

А если серьёзно, причина только одна.
Хостите ли вы этого бота? Могу ли я обойтись публичной версией? Дайте ссылку!
Ссылка. Бот доступен не всегда и иногда отвечает медленно. Мы не хостим публичную версию бота. Чтобы он появился на Вашем Discord сервере, его необходимо установить.
Мы знаем, что бот уже хостится здесь:
Напишите нам, чтобы попасть в этот список.
Что-то он в основном бессвязный бред отправляет.

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

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

На данном этапе мы решили не расходовать ёмкость сети на латинские триграммы. Латиница автоматически транслитерируется в кириллицу с помощью opendatakosovo/cyrillic-transliteration. Мы тестировали много подобных библиотек, эта — самая быстрая.
Потому-что великий и могучий. Идея, конечно же, не наша, а взята из этой книги.
В данном кейсе нет. Так как лдюи в чатах пиушт с очепятками, а инагда с ашебками. A inogda translitom, ile fse vmesti.
Другое дело википедию или новостные ленты разбирать.

Да. Только пока рандомно. Всем кастомным эмодзи присвоен единый токен в словаре. В будущем есть планы привязать CNN с классификатором.
Вы просто скопировали гайд для TensorFlow 2, что вы сделали сами?
- Алгоритм токенизации русского текста и разбора сущностей Discord: упоминания пользователей / ролей / каналов, ссылки, эмодзи и т.д.
- Перелопатили уйму доступных реализаций Transformer
- Нашли подходящую реализацию и связали её с нашим токенизатором и Discord API
- Спарсили 36M+ публичных сообщений русскоязычного Discord комьюнити и обучили трансформер на нём
- Напечатали этот текст
Мы просто оставим это здесь.
- Больше парсить, дольше обучать
- CNN для классификации эмодзи без учителя
- Пробуем Universal Transformer
- И Transformer XL
- Если не закончится кофе

About
Русскоязычный чат-бот для Discord на архитектуре Transformer