我正在尝试使用 Telegram BOT 向群组发送消息。首先,我认为知道群聊 ID 就足以完成此任务,但事实并非如此。 BOT 必须是该组的一部分。好吧,这有点道理,但问题是:当您将 BOT 添加到一个组(在本例中是一个大组)时,每个人都开始在其设备上看到一个新图标,即“斜杠”图标。他们做什么?他们单击它,查看命令列表,选择其中一个,突然每个人都从组中收到一条新消息:“/something”。想象一下有几十人这样做吗?这很烦人。所以,这些中的任何一个都适合我:
1) 我可以在群组中没有 BOT 的情况下从 BOT 向群组发送消息吗? 2)我可以有一种“无方法”BOT,只发送消息吗? 3)我可以禁用客户端的“斜杠”图标,这样我就不会在组中发生“机器人方法战争”吗?
谢谢你
我得到了一个更好的解决方案:可以直接通过代码自定义命令,也取决于上下文(即私人聊天、群组等...)
这个示例是使用
Telegraf
完成的,但这与基本代码没有太大不同
bot.start(function(ctx) {
// If bot is used outside a group
ctx.telegram.setMyCommands(
[
{
"command": "mycommand",
"description": "Do something in private messages"
}, {
"command": "help",
"description": "Help me! :)"
}
],
{scope: {type: 'default'}}
)
// If bot is used inside a group
ctx.telegram.setMyCommands(
[
// <-- empty commands list
],
{scope: {type: 'all_group_chats'}}
)
ctx.reply('Hello! I\'m your super-cool bot!!!')
})
奖励点,您还可以通过检查源来管理命令行为。 因此,例如,如果组中的用户仍然尝试手动使用您的命令,而您不想执行任何操作:
bot.help(function(ctx) {
// Check if /help command is not triggered by a private chat (like a group or a supergroup) and do nothing in that case
if (ctx.update.message.chat.type !== 'private') {
return false
}
ctx.reply('Hi! This is a help message and glad you are not writing from a group!')
})
您可以设置
scope
,其中命令可用。将其设置为 all_private_chats
,命令将仅在私人聊天中可见。