Как использовать setMessageReaction(node-telegram-bot-api)?

Возникает ошибка ETELEGRAM:

400 Bad Request: message to react not found

Я использую API node-telegram-bot и пытаюсь установить реакцию на сообщение в канале с помощью метода setMessageReaction:

bot.setMessageReaction method('@channel_name', message_id, [
{type: 'emoji', emoji: '👍' },
])

Но я получаю следующую ошибку:

ETELEGRAM: 400 Bad Request: message to react not found

В чем может быть причина, если идентификатор сообщения правильный?

Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Привет, люди RPA, это снова я и я несу подарки! В очередном моем приключении о том, как создавать ботов для облегчения рутины. Вот, думаю, стоит...
0
0
292
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ваш бот должен иметь необходимые разрешения для добавления реакций в целевой чат.

const TelegramBot = require('node-telegram-bot-api');

const token = 'YOUR_BOT_TOKEN';
const bot = new TelegramBot(token, { polling: true });

const chatId = 123456789;
const messageId = 123; 

const reaction = [{ type: 'emoji', emoji: '👍' }]; 

bot.setMessageReaction(chatId, messageId, reaction)
  .then(() => {
    console.info('Reaction added successfully!');
  })
  .catch(error => {
    console.error('Error adding reaction:', error);
  });

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

Alan 12.03.2024 09:36

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

Aariyan Patel 12.03.2024 11:35

Да, это так работает, спасибо! результат возвращает true, но смайлик не отображался в самом сообщении. было бы интереснее, если бы можно было ставить реакции на какие-нибудь каналы :)

Alan 12.03.2024 12:51
Ответ принят как подходящий

Проблема не в разрешениях, а в том, что эмодзи нужно передавать таким образом.

const reaction = [{ type: 'emoji', emoji: '🤬' }];

bot.setMessageReaction(chatId, messageId, {reaction: JSON.stringify(reaction)})

и как мы можем установить счетчик реакции?

Alan 17.03.2024 22:16

но Ариян тоже прав, боту нужны разрешения

Alan 17.03.2024 22:30

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

Makasin 28.03.2024 22:42

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

Makasin 28.03.2024 22:45

Другие вопросы по теме