Я использую discord.py, чтобы создать своего бота Discord, и когда кто-то набирает сообщение, я хочу проверить, позволяет ли пользователь сказать foo # 3645, а затем сделать что-то, если это не так, тогда сделайте что-то еще
if (messageAuthor = foo#3465″): # do something
но по какой-то причине это не работает .
Если вам нужна дополнительная информация, прокомментируйте.
Комментарии (1)
ctx.message.author не содержит имени, я думаю, вы ищете ctx.message.author.name (см. discordpy.readthedocs.io/en/rewrite/…). Хотя вам лучше использовать идентификатор, как ответил MCO.
06.09.2018 16:56
Оператор pass в Python — это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Python — самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science.
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Making a Discord Bot In Python (Part 1: Setup)
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
Перейти к ответу Данный вопрос помечен как решенный
Ответы 4
Ответ принят как подходящий
если вам нужна надежная проверка, проверьте идентификаторы пользователей:
if author.id == 170733454822341405: #do something
06.09.2018 17:05
Представление str для User (включая Member ) будет их именем пользователя (а не псевдонимом для конкретного сервера) и дискриминатором (используемым для различения людей с одним и тем же именем пользователя).
if str(ctx.message.author) == «foo#3465»: .
Тем не менее, вы должны проверять id , так как человек может изменить свое имя пользователя в Discord. id — это строки в асинхронной ветви discord.py и целые числа в discord.py-перезаписать
06.09.2018 17:13
Мне кажется, что вы пытаетесь сравнить экземпляр «автора» с именем и дискриминатором. Что вам нужно сделать, это либо: 1) найдите члена с именем «foo # 3465» и сравните ЭТО с ctx.message.author или «messageAuthor»
member = discord.utils.get(message.guild.members, name=’Foo’) if member == messageAuthor: #do something else: #do something else
или, в качестве альтернативы, вы можете: 2) сравните messageAuthor.name с «foo» или str (messageAuthor) с «foo # 3465»
06.09.2018 17:19
Лучше всего проверить идентификатор пользователя. Согласно документы, User.id является целым числом, а не строкой, поэтому принятый ответ может не работать. message.author относится к типу User .
Вот что сработало для меня:
if message.author.id = 170733454822341405: #do something
Чтобы получить чей-либо идентификатор пользователя вручную, включите режим разработчика в Discord (настройки пользователя -> внешний вид -> расширенный), затем просто щелкните правой кнопкой мыши в любом месте пользователя и нажмите кнопку копирования идентификатора.
[NEW] Slash Commands in Less than 10 Minutes Using Discord.PY
Источник: reddeveloper.ru
Есть ли способ проверить, содержит ли файл message.content на Discord файл?
На моем сервере Discord у меня есть канал #selfies, где люди обмениваются фотографиями и общаются с ними. Время от времени я хотел бы как-то обрезать все сообщения, которые не содержат файлов/изображений. Я пробовал проверять документацию, но я не видел никакого способа сделать это. Разве это невозможно?
cute 15 янв. 2018, в 02:59
Поделиться
Я думаю, что вы должны смотреть либо на discord.Message.attachments либо на discord.Message.embeds
Patrick Haugh 15 янв. 2018, в 01:18
Поделиться:
2 ответа
Я не слишком хорошо знаком с discord.py (поскольку я использую discord.js ), но если это похоже на discord.js должно быть message event . Это событие будет выполняться на каждом сообщении, которое идеально подходит для того, что вы ищете сейчас. Теперь для псевдокода.
//written in javascript Message event: On each message < if(message.attachments.size >
Общая идея заключается в том, что с использованием message event (например, для каждого message ) вы проверяете, превышает ли список вложений в message больше 0 (что означает, что он содержит файл или изображение), а если нет, вызовите функцию delete() в python для удаления message .
Источник: overcoder.net
Как сделать что бы бот ожидал пока пользователь прикрепит файл, а потом сохранит его в discord.py?
Вот код сохранения файла, он будет работать если внедрить в структуру on_message. Но мне нужно сделать что бы бот ожидал, пока пользователь отправит файл, а потом эта часть кода сделает свое дело, и как это сделать я не знаю
- Вопрос задан более года назад
- 89 просмотров
Решения вопроса 0
Ответы на вопрос 2
Отправленный файл — это ведь тоже сообщение, просто с прикреплённым аттачем. Почему бы не обрабатывать сообщения от пользователей и смотреть аттачи? Строго говоря, файл и команда могут вообще быть в одном сообщении, хотя это несколько менее удобно.
А вообще ты встретился с необходимостью в машине состояний. В discord.py её вроде нет «из коробки», придётся самому реализовывать. Это не так сложно, просто нужно вести список или словарь пользователей, от которых мы ждём файл. При поступлении сообщения с файлом смотрим, есть ли отправитель в этом списке. Если есть, обрабатываем файл и убираем его оттуда, если нет — игнорируем сообщение.
С таймаутом сложнее, но можно в списке хранить не id пользователя, а пары id-метка времени. Тогда можно будет понять, когда был послан запрос, и периодически удалять «старые» записи из списка.
Ответ написан более года назад
В discord.py есть функция wait_for, которая ждёт определённое событие, и если такое произошло, то оно возвращает результат.
msg = await bot.wait_for(‘message’, timeout=60, check=lambda m: m.channel == message.channel and m.author == message.author) for attach in msg.attachments: await attach.save(f»./.png»)
Ответ написан более года назад
Ваш ответ на вопрос
Вопрос закрыт для ответов и комментариев
Потому что уже есть похожий вопрос.
- Python
- +1 ещё
Как переустановить компонент python? Как сделать Portable версию python?
- 1 подписчик
- 44 минуты назад
- 8 просмотров
Источник: qna.habr.com