我如何获取成员加入节点电报机器人 API 的聊天邀请链接#chatmemberupdated

问题描述 投票:0回答:1

我正在尝试制作一个电报机器人,我想要聊天邀请链接,成员可以通过该链接加入电报组。我在 NodeJS 中使用节点电报机器人 api,同时使用官方电报机器人 api https://core.telegram.org/bots/api#chatmemberupdated 中指定的“chatMemberUpdated”方法。但我没有收到任何更新,这是代码。

bot.on("chatMemberUpdated", async (update) => {
  try {
    const chatId = await update.chat.id;
    const newMember = await update.message.new_chat_member;

    // Check if a new member joined
    if (newMember) {
      const chatInviteLink = await update.message.chat_invite_link;

      if (chatInviteLink) {
        console.log(
          `New member ${newMember.first_name} joined in chat ${chatId}`
        );
        console.log(`Chat Invite Link: ${chatInviteLink}`);
      } else {
        console.log(`Chat Invite Link not available for chat ${chatId}`);
      }
    }
  } catch (error) {
    console.log(error)
  }
});

我尝试使用“new_chat_members”和“left_chat_member”方法,它们返回有关成员加入和离开的数据,但我想要邀请链接,因为我无法理解要使用哪种方法。任何建议将不胜感激,如果有任何替代方法可以实现上述相同的目标,我也愿意接受这些建议。

node.js express telegram-bot node-telegram-bot-api
1个回答
0
投票

我得到答案后,这是我的一个愚蠢的错误,“chatMemberUpdated”是一种方法类型,我们可以通过它来获取会员加入的invite_link。这里使用的方法是“chat_member”,而 {allowed_updates : chat_member} 选项可用于机器人,如 telegram api 官方文档中所述,

The bot must be an administrator in the chat and must explicitly specify "chat_member" in the list of allowed_updates to receive these updates.
使用 telegraf 的示例代码(我认为 node-telegram-bot-api npm 包不支持此方法)如下所示:-

const { Telegraf } = require('telegraf');
const { message } =  require('telegraf/filters')

const botToken = 'YOUR_TOKEN_GOTTEN_THROUGH_BOTFATHER';

const bot = new Telegraf(botToken);

bot.on('chat_member', (ctx) => {
  console.log(ctx.chatMember.invite_link)
})

// Start the bot
bot.launch({
  allowedUpdates : ['chat_member']
}).then(() => {
  console.log('Bot is running');
});

invite_link 可以在 chatMember 对象中找到。我用 telegraf 尝试过这一点,但也可以从 node-telegram-bot-api 获得相同的结果。

© www.soinside.com 2019 - 2024. All rights reserved.