Авто реакции на сообщения дискорд бот

Я пытался заставить бота с помощью discord.py добавить реакцию на сообщение с использованием discord.py после прочтения этого (это не то, что я хотел, потому что я не использую пользовательские эмодзи), но в итоге выдает эту ошибку:

discord.ext.commands.errors.CommandInvokeError: Command raised an exception: InvalidArgument: message argument must be a Message

Я пробовал этот код

Любые другие связанные с этим вопросы здесь на discord.py просто бесполезны для этого. Любые идеи о том, как реализовать это

user10592737 05 дек ’18 в 16:03 2018-12-05 16:03
2018-12-05 16:03

2 ответа

Сообщение об ошибке говорит вам, что это за ошибка: message argument must be a Message «

await bot.add_reaction(msg, emoji)

msg это строка, а не Message объект. Вам нужно захватить отправленное вами сообщение, а затем добавить реакции на это сообщение:

user6779307 05 дек ’18 в 17:43 2018-12-05 17:43
2018-12-05 17:43

В дополнение к этому, когда я столкнулся с этим вопросом, задаваясь вопросом, как добавить реакции в 2022 году, на случай, если кто-то еще столкнется с этим.

Метод, показанный в ответе выше, содержащий:

Это больше не будет работать, и вы получите сообщение об ошибке, например:

AttributeError: ‘Bot’ object has no attribute ‘add_reaction’

Вместо этого вы захотите сделать что-то вроде:

Я также обнаружил, что для нескольких реакций вам нужно выполнять их отдельно:

И для всех, кто интересуется пользовательскими смайликами: (получите идентификатор смайлика, набрав затем щелкните смайлик, или вы можете сохранить файл пользовательского смайлика и скопировать значение по умолчанию, которое он вам дает.)

Еще по теме:  Как отключить 2fa в дискорд если забыл код

Источник: stackru.com

Как написать бота на discord.py который будет ставить реакцию на все сообщения определённого пользователя?

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

4 янв 2021 в 8:41

1 ответ 1

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

Читайте документацию, там ничего сложного нет.

Отслеживать
ответ дан 4 янв 2021 в 8:59
387 1 1 серебряный знак 13 13 бронзовых знаков

  • discord
  • discord.py
    Важное на Мете

Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник: ru.stackoverflow.com

Как сделать так, чтобы бот ставил реакции на сообщения любого пользователя на определенном текстовом канале?

Пример использования:
Любой пользователь пишет сообщение «хочу тортик»
Бот под сообщением «хочу тортик» должен поставить три реакции заранее выбранных эмодзи, которые другие пользователи смогут протыкать
И так с любым пользователем, т.е. под каждым сообщением на данном канале будут одни и те же реакции, чтобы люди могли оценивать сообщения друг друга

  • Вопрос задан более года назад
  • 1023 просмотра

Комментировать
Решения вопроса 1

Alexandre888

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

client.on(«messageCreate», async (message) => < await message.react(«1️⃣»); // >await message.react(«2️⃣»); // > ваши эмодзи await message.react(«3️⃣»); // > >);
чтобы бот реагировал на обычные сообщения, не забудьте добавить интент «GUILD_MESSAGES»
const client = new Client(< intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] >);
Ответ написан более года назад
Нравится 1 10 комментариев

Так и не понял, мне нужно, чтобы бот на канале «оффтоп» на каждое сообщение любого пользователя накидывал по три реакции, причем тут определенная фраза? Можно ли как-то не привязывая к фразам это реализовать? Или я что-то не понимаю?

Еще по теме:  Как добавить бота dyno в дискорд сервер

И как мне добавить вашу константу, если у меня она в таком виде?
const bot = new Discord.Client();

Alexandre888

Бот под сообщением «хочу тортик» должен поставить три реакции

мне нужно, чтобы бот на канале «оффтоп» на каждое сообщение любого пользователя накидывал по три реакции, причем тут определенная фраза?

ну это конечно номер.

И как мне добавить вашу константу, если у меня она в таком виде?

именно по этой причине нужно в описании вопроса всегда указывать версию библиотеки, которую вы используете.
как я понимаю, у вас версия discord.js ниже 13 (проверьте, прописав npm list discord.js в терминал).
очень советую вам обновиться до 13, т.к приблизительно в начале мая дискорд выведет из эксплуатации API 6/7 версии, которые используются в discord.js 12 версии — дальнейшее использование станет невозможным.

если обновляться не будете, напишите, я покажу пример с вашей версией.

Александр, Да, была версия 12.5.3, сейчас 13.6.0, теперь понять бы как сделать, чтобы всё работало

const Discord = require(‘discord.js’); const client = new Discord.Client(); client .commands = new Discord.Collection();
const < Client, Intents >= require(‘discord.js’); const client = new Client(< intents: [Intents.FLAGS.GUILDS] >);

Александр, Про «хочу тортик» моя ошибка, это был лишь пример, т.е. кто-то напишет «хочу тортик», а кто-то например напишет «шла Саша по шоссе» и в том и в том случае бот должен среагировать 😀

Alexandre888

const < Client, Intents, Collection >= require(‘discord.js’); const client = new Client(< intents: [Intents.FLAGS.GUILDS] >); client .commands = new Collection();

главное не забудьте добавить Intents.FLAGS.GUILD_MESSAGES , как я написал в ответе

Alexandre888

Николай Фёдоров, в таком случае проверок делать не надо.

client.on(«messageCreate», async (message) => < await message.react(«1️⃣»); // >await message.react(«2️⃣»); // > ваши эмодзи await message.react(«3️⃣»); // > >);

Еще по теме:  Как убрать better discord

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

я имел в виду, что вы можете сделать if-условие, если вам нужно проверять — было ли сообщение отправлено в определенном канале/есть ли в сообщении определенная фраза.

Александр, А как через if проверить было ли сообщение отправлено в определенном канале, т.е. чтобы он срабатывал только в одном канале?

Alexandre888

Николай Фёдоров, по ID/названию:

if (message.channel.id === «ID_канала») < // . // >// или же // if (message.channel.name === «название_канала») < // . // >

Источник: qna.habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...