如何检查用户有tg订阅保费时启动机器人使用node.js和telegraf.js

3z6pesqy  于 12个月前  发布在  Node.js
关注(0)|答案(2)|浏览(101)

我试图拉数据,用户是否有一个溢价tg,但它不工作.
你知道这个问题的解决办法吗?

ef1yzkbh

ef1yzkbh1#

Telegram Bot API为您提供了一个User对象,表示一个Telegram用户。
此对象包含以下字段:
is_premium
类型:真

  • 可选 *。如果此用户是Telegram Premium用户,则为True

这已添加到2022年6月20日发布的Bot API 6.1中
因此,您只需要使用Telegraf获取User对象,并检查是否设置了is_premium键。
例如,User应在ctx上以from的形式可用:

bot.on(message('text'), async (ctx) => {

  const is_premium = ctx.from.is_premium;
});

字符串

xfb7svmp

xfb7svmp2#

const { Telegraf } = require('telegraf')

const bot = new Telegraf(process.env.BOT_TOKEN)

bot.command('check_premium', async (ctx) => {
  const chatId = ctx.message.chat.id
  const userId = ctx.message.from.id
  
  try {
    const chatMember = await ctx.telegram.getChatMember(chatId, userId)
    const isPremium = chatMember.status === 'creator' || chatMember.status === 'administrator' || chatMember.status === 'member' && chatMember.is_member == true && chatMember.can_pin_messages == true
    
    if (isPremium) {
      ctx.reply('Congratulations! You have Telegram Premium.')
    } else {
      ctx.reply('Sorry, you do not have Telegram Premium.')
    }
  } catch (error) {
    console.error(error)
    ctx.reply('An error occurred while checking your subscription status.')
  }
})

bot.launch()

字符串

相关问题