Discord py бот не видит участников
Как следует из названия, есть ли способ, чтобы бот не работал в PM-х и работал только тогда, когда используется в каналах?
Есть ли более простой способ сделать это? Я читал, что мог бы использовать для этого глобальную проверку, но не знаю, как это реализовать.
EDIT: я кодирую это с помощью Commands Extension
3 ответа
как сделать бота-регистратора в discord.py, который сохраняет разговор в текстовый файл. Так, например, бот сохраняет все чаты в папке с именем chatlogs, а в discord Server A каждый раз, когда кто-то говорит что-то, что бот может видеть, бот регистрирует это в файле с именем ServerA.txt, а когда.
То, как ты это сделал, - именно то, что сделал бы я. Вы говорите, что не хотите повторять строку каждый раз , но у вас может быть только один on_message() , так что эта строка должна появиться только один раз; каждая команда, которая должна подчиняться этим правилам, будет просто находиться в этом блоке if :
EDIT: Похоже, вы используете расширение commands , которое в значительной степени не задокументировано.
Однако , читая строку документа для Command , я наткнулся на этот раздел:
Поэтому, если вы определяете свою команду как таковую:
Он будет отключен в PMs.
Если вы хотите закодировать его с помощью @bot.event , вы должны сделать это так:
Похожие вопросы:
Я не уверен, что есть какая-то функция системного уровня, подобная этой. В любом случае, есть ли способ сделать так, чтобы NSWindow выглядел отключенным и не реагировал на ввод пользователя?
Как сделать так, чтобы бот автоматически реагировал на новых участников, присоединенных к группам без команды типа? Посмотрите на эту картину: Бот отправляет новый текст, когда пользователи.
как сделать бота-регистратора в discord.py, который сохраняет разговор в текстовый файл. Так, например, бот сохраняет все чаты в папке с именем chatlogs, а в discord Server A каждый раз, когда.
Итак, я создаю бота discord.py, и я хочу сделать пользовательский статус. Мой код таков: workingstate = discord.Game( Off sorting books ) idlestate = discord.Game( At the front desk ) Но когда я.
Помните, не нужно спешить пройти проверку до 7 октября, проверка в любом случае занимает около 5-ти дней. Если у Вас менее 100 серверов, Вам не о чем беспокоиться, ваш бот будет работать так же, как и всегда. Имейте ввиду, некоторые вещи НЕ официальные. Относитесь ко всему с долей скептицизма.
- Если Вы находитесь в команде, проверку может пройти только владелец, после проверки значок получат все её участники. Источник
- Если Вы не можете пройти проверку, Вы можете передать вашу команду другому участнику, чтобы он мог выполнить процесс проверки. Источник
- Проверка пользователя через Stripe производится только один раз, далее она не требуется, но каждого бота нужно отдельно подтверждать.
- Вам НЕ нужен аккаунт в Stripe для подтверждения, только документ. Источник
- Проверка необходима только в том случае, если ваш бот находится на более чем 100 серверов, но вы можете начать, если бот находится на 75+ серверах. Источник
- Будет ли проверка доступна для ботов менее чем на 75 серверах? В данный момент нет. Discord может повысить или понизить этот лимит в будущем. Источник
- Для проверки требуется около пяти рабочих дней. Источник
- Крайний срок — 7 октября, после чего Ваш бот не сможет присоединяться к более чем 100 серверам, но не будет удален из существующих. К тому же, Вы не сможете использовать «Privileged intents». Источник
- Проверка доступна всем, кто может использовать Discord, то есть с 13 лет.
- Верификация производится человеком, не нужно беспокоиться о том, что боты неправильно вас поймут.
Что такое «Privileged Intents»? Источник
GUILD_MEMBERS позволяет Вам получать обновления пользователей, а так же их вход и выход с сервера. GUILD_PRESENCES позволяет Вам получать статусы, такие как «В Сети», «Не Активен» и так далее.
Не являющийся исчерпывающим список документов Источник
- Паспорт
- Водительские права (перед/зад)
- ID карта (перед/зад)
- Вид на жительство/Грин карта США/Удостоверения жителя Северной Каролины
- Отметка о пересечении границы
- Идентификационная карта подростка
- Нью-Йоркская карта
- Банковская карта Visa США
Если у Вас нет документа, свяжитесь с поддержкой, они помогут. Кроме того, по-видимому, в США Вы можете получить идентификацию штата с разрешения родителей.
- Stripe - надежная платформа для платежей, не надо беспокоится о своих данных. Они не зарабатывают на них, они получают доход, благодаря комиссии за перевод. Для тех, кто беспокоиться о хранении данных на серверах США, Я понимаю, но у нас нет другого выбора. Я не говорю, что так должно быть, я говорю, что так есть.
- Получат ли наши боты верифицированный сервер технической поддержки? Это уже спрашивали несколько раз. У меня есть заметка "подумать об этом", но ничего прямо сейчас. Источник
Вопросы о форме верификации
КАКИЕ СИСТЕМЫ И ИНФРАСТРУКТУРУ ВЫ ИСПОЛЬЗУЕТЕ?
Как и на чем работает ваш бот?
- Операционная система с версией, если возможно.
- Библиотеки (включая их версии) и язык программирования.
- Базы данных, если таковые используются.
- Информация о хостинге, например, хостинг-провайдер или ваш домашний сервер.
ЗАЩИТИЛИ ЛИ ВЫ ВАШИ СИСТЕМЫ И ИНФРАСТРУКТУРУ?
Безопасен ли ваш сервер? Может ли кто-либо получить доступ к данным?
ИСПОЛЬЗУЕТ ЛИ ВАШЕ ПРИЛОЖЕНИЕ СТОРОННИЕ СЕРВИСЫ АВТОРИЗАЦИИ? ЕСЛИ ДА, ТО КАКИЕ И ПОЧЕМУ?
Сторонние авторизационные сервисы больше похожи на «Использует ли ваш бот Twitch OAuth, чтобы вы имели возможность присоединить Discord к Twitch?» Источник
Вся информация о сборе и хранении данных
Если вы не храните никаких данных, просто напишите Я не храню данные . Если вы храните данные, например, об уровнях и валюте, вы должны написать об этом. До тех пор, пока данные анонимны, это не создаст никаких проблем. В любом случае, ложная информация о хранимых данных доставит вам ещё больше неприятностей.
Считается ли сбором данных отправка этих данных в текстовый канал?
Нет. Это, буквально, отправка данных из Discord, обратно в Discord. Это нормально.
ПОЧЕМУ DISCORD ПОЛУЧАЕТ ДОСТУП К МОЕМУ ДОКУМЕНТУ.
Вероятно, потому, что им нужно подтвердить, что Stripe не лжёт им о верификации. Они четко сказали, что они не хранят никаких данных.
Из этого туториала Вы узнаете, как полностью создать собственного бота Discord в облаке.
Вам не нужно ничего устанавливать на свой компьютер, и вам не нужно ничего платить за размещение своего бота.
Мы будем использовать целый ряд инструментов, в том числе Discord API, библиотеки Python, и платформы облачных вычислений под названием Repl.it.
Как создать учетную запись Discord Bot
Чтобы работать с библиотекой Python и API Discord, мы должны сначала создать учетную запись Discord Bot.
Вот шаг к созданию учетной записи Discord Bot.
1. Убедитесь, что вы вошли на сайт Discord.
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:
Возможно, вам придется использовать pip3 вместо pip .
Если вы используете Windows, вы должны вместо этого использовать следующую строку:
Как настроить события Discord для вашего бота
Добавьте этот код в main.py. (Вы можете назвать файл как-нибудь иначе, только не discord.py.) Я вскоре объясню, что делает весь этот код.
Когда вы создали своего пользователя-бота в Discord, вы скопировали токен. Теперь мы собираемся создать файл .env для хранения токена. Если вы запускаете свой код локально, вам не нужен файл .env . Просто замените os.getenv('TOKEN') токеном.
.env файлы используются для объявления переменных среды. На Repl.it большинство создаваемых вами файлов видны всем, но .env файлы видны только вам. Другие люди, просматривающие публичный ответ, не смогут увидеть содержимое файла .env .
Поэтому, если вы разрабатываете на Repl.it, включайте в файл .env только личную информацию, такую как токены или ключи.
Внутри файла добавьте следующую строку, включая ваш фактический токен, который вы скопировали ранее:
Теперь давайте рассмотрим, что делает каждая строка в коде вашего бота Discord.
У нас есть код для бота, поэтому теперь нам просто нужно его запустить.
Как запустить бота
Теперь нажмите кнопку запуска вверху, чтобы запустить своего бота в repl.it.
Если вы пишете бота локально, вы можете использовать эти команды в терминале для запуска бота:
В других системах:
Теперь перейдите в свою комнату в Discord и введите «$hello». Ваш бот должен ответить «Hello!».
Как улучшить бота
Теперь, когда у нас есть базовый бот, мы его улучшим. Не зря он называется «Encourage Bot».
Мы начнем с добавления функции «$inspire».
Как добавить в бота вдохновляющие цитаты
Мы будем получать вдохновляющие цитаты из API под названием zenquotes.io. Нам нужно импортировать еще пару модулей Python, добавить функцию get_quote() и обновить код нашего бота, чтобы вызвать функцию.
Вот обновленный код. После кода я объясню новые части.
Функция get_quote() очень проста. Во-первых, она использует модуль запросов для запроса данных из URL-адреса API. API возвращает случайную вдохновляющую цитату. Эту функцию можно легко переписать для получения котировок из другого API, если текущий перестанет работать.
Затем внутри функции мы используем json.loads() для преобразования ответа API в JSON. Методом проб и ошибок я понял, как перевести цитату из JSON в нужный строковый формат. Цитата возвращается из функции в виде строки.
На этом этапе вы можете запустить свой код и попробовать его.
Как добавить грустные слова в бота
Для начала нам нужно создать список Python, содержащий грустные слова, на которые будет отвечать бот.
Добавьте следующую строку после создания переменной client :
Не стесняйтесь добавлять в список больше слов.
Добавьте следующий список после созданного вами списка sad_words :
Как и раньше, не стесняйтесь добавлять в список другие фразы по вашему выбору. Сейчас я использую всего три элемента, потому что позже мы добавим возможность пользователям добавлять больше ободряющих фраз для использования ботом.
Вот обновленный код:
Это хорошее время для тестирования бота. Теперь вы знаете достаточно, чтобы создать собственного бота.
Узнайте, как создать своего собственного бота Discord с помощью Python и Reply.it. Мы пройдем все шаги, необходимые для настройки вашего бота на Discord, а затем закодируем его с помощью Python, все в облаке.
Примечание: этот учебник представляет собой отрывок из Код с Reply.it: Проекты на Python для начинающих , книга и набор учебных пособий для начинающих, чтобы получить практический опыт программирования на Python.
Если вы предпочитаете JavaScript, вы можете найти перевод этого руководства с использованием NodeJS вместо Python.
Вам будет легче следить за этим, если у вас есть некоторые знания Python и вы уже использовали Discord или подобное приложение, такое как Skype или Telegram. Мы не будем рассматривать самые основы Python, но мы подробно объясним каждую строку кода, поэтому, если у вас есть какой-либо опыт программирования, вы должны быть в состоянии следовать этому.
Обзор и требования
Мы будем делать все наше кодирование через Repl.it веб-IDE и хостинг нашего бота с Repl.it кроме того, вам не нужно будет устанавливать какое-либо дополнительное программное обеспечение на свой компьютер. Для этого урока вам нужно будет создать учетную запись Discord (если она у вас уже есть, вы можете пропустить это). Инструкции о том, как это сделать, приведены в следующем разделе.
В этом уроке мы рассмотрим:
- Создание приложения и пользователя бота в вашей учетной записи Discord
- Создание сервера на Discord
- Добавление нашего бота на наш сервер Discord
Давайте сначала пройдем через эти шаги администратора, а затем перейдем к самой интересной части кодирования нашего бота.
Создание бота в Discord и получение токена
Вы можете зарегистрироваться на бесплатную учетную запись на странице регистрации Discord и загрузить одно из своих настольных или мобильных приложений с домашней страницы Discord . Вы также можете использовать Discord в браузере.
Обратите внимание на свой токен или скопируйте его в буфер обмена, так как в ближайшее время нам нужно будет добавить его в наш код.
Создание сервера Раздора
Добавление бота Discord на сервер Discord
Создайте URL-адрес, который выглядит следующим образом, но в конце используйте свой идентификатор клиента вместо моего:
Создайте URL-адрес, который выглядит следующим образом, но в конце используйте свой идентификатор клиента вместо моего:
Перейдите по URL-адресу, созданному в вашем веб-браузере, и вы увидите страницу, похожую на следующую, где вы можете выбрать, на какой сервер добавить своего бота.
Теперь мы можем перейти к самой веселой части создания мозга для нашего бота!
Создание Repl и установка наших зависимостей Discord
Наш бот почти готов к работе, но нам все еще нужно подключить ваш секретный токен. Это позволит вашему коду управлять нашим ботом.
Настройка авторизации для нашего бота
По умолчанию, Repl.it код является общедоступным. Это здорово, поскольку это поощряет сотрудничество и обучение, но мы должны быть осторожны, чтобы не делиться нашим секретным токеном бота (который дает любому, кто имеет к нему доступ, полный контроль над нашим ботом).
Чтобы обойти проблему необходимости предоставления нашему коду доступа к токену, позволяя другим получить доступ к нашему коду, но не нашему токену, мы будем использовать переменные среды . На обычной машине мы бы установили их непосредственно в нашей операционной системе, но с помощью Repl.it у нас нет к этому доступа. Reply.it позволяет нам устанавливать секретные переменные среды через специальный файл .env .
Откройте этот новый файл и добавьте переменную для определения секретного токена вашего бота (обратите внимание, что это второй токен, который мы получили при настройке бота-отличается от идентификатора клиента, который мы использовали для добавления нашего бота на наш сервер). Это должно выглядеть примерно так:
Вам нужно будет:
- Замените токен (после знака = ) на токен, который Discord дал вам при создании собственного бота.
- Будьте осторожны с интервалом . В отличие от Python, если вы поставите пробел по обе стороны от = в файле .env , эти пробелы будут частью имени переменной или значения, поэтому убедитесь, что у вас нет пробелов вокруг = или в конце строки.
- Запустите код еще раз. Иногда вам нужно обновить всю страницу, чтобы убедиться, что переменные среды успешно загружены.
Давайте создадим бота Discord, который повторяет все, что мы говорим, но в обратном порядке. Мы можем сделать это всего за несколько строк кода. В вашем main.py файл, добавьте следующее:
Давайте разорвем это на части строка за строкой, чтобы посмотреть, что он делает.
Последние две строки получают наш секретный токен из переменных среды, которые мы настроили ранее, а затем сообщают вашему боту о запуске.
Откройте Discord и на сервере, который мы создали ранее, выберите приложение ReplBotApplication на панели в правой части экрана.
Бот отвечает каждый раз, меняя текст, который мы вводим.
Поддержание жизни нашего бота
Reply.it ваш код будет работать после закрытия вкладки браузера только в том случае, если вы используете веб-сервер. Потому что мы используем Python discord.py библиотека, наш бот не требует явного веб-сервера, но мы можем создать сервер и запустить его в отдельном потоке, просто чтобы сохранить наш Репл живым. Мы сделаем это с помощью фреймворка Flask .
Создайте новый файл в своем проекте под названием keep_alive.py и добавьте следующий код:
В нашем main.py файл, нам нужно добавить импорт для этого сервера в верхней части. Добавьте следующую строку в верхней части main.py .
Теперь ваш бот будет оставаться живым даже после закрытия браузера или выключения машины разработки. Repl все равно очистит ваш сервер и убьет вашего бота примерно через час бездействия, поэтому, если вы некоторое время не используете своего бота, вам придется войти в Repl и снова запустить бота. Кроме того, вы можете настроить сторонний (бесплатный!) сервис, например Uptime Robot . Робот Uptime пингует ваш сайт каждые 5 минут, чтобы убедиться, что он все еще работает-обычно, чтобы уведомить вас о неожиданном времени простоя, но в этом случае постоянные пинги имеют побочный эффект сохранения нашего Репла, поскольку он никогда не будет работать больше часа без какой-либо активности.
Разветвление и расширение нашего базового бота
Это не очень полезное и то, и другое, но сейчас возможности ограничены только вашим творчеством! Вы можете заставить своего бота получать ввод от пользователя, обрабатывать ввод и отвечать любым выбранным вами способом. На самом деле, с базовым вводом и выводом, которые мы продемонстрировали, у нас есть большинство компонентов любого современного компьютера, все из которых основаны на архитектуре фон Неймана (мы могли бы легко добавить недостающую память, если бы наш бот записал в файл или с немного большим усилием связался с базой данных SQLite для постоянного хранения).
Если вы застряли в поисках идей, почему бы не связать свой дискорд с API Twitch , чтобы получать уведомления, когда ваши любимые стримеры находятся в Сети, или создать текстовое приключение .
В следующем уроке мы снова построим точно такую же лодку , но с использованием NodeJS вместо Python. Даже если вы предпочитаете Python, часто бывает хорошей идеей создать один и тот же проект на двух языках, чтобы вы могли лучше оценить различия и сходства.
Читайте также: