我正在尝试拉数据,用户是否有高级tg,但它不起作用。
Сan你知道这个问题的解决方法并帮助我吗?
Telegram Bot Api提供了一个User
对象,代表一个Telegram用户。
该节点包含以下字段:
is_premium
类型:真正的
可选。True,如果此用户是Telegram Premium用户
这已添加到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;
});
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()