当它是组的一部分时如何隐藏 Telegram BOT 命令?
How to hide Telegram BOT commands when it is part of a group?
我正在尝试使用 Telegram BOT 向群组发送消息。首先,我认为知道群聊 ID 就足够了,但事实并非如此。 BOT 必须是该组的一部分。好吧,这有点道理,但问题是:当你将 BOT 添加到一个组(在这种情况下是一个大组)时,每个人都会开始在他们的设备上看到一个新图标,一个 "slash" 图标。他们做什么?他们单击它,查看命令列表,选择其中一个,然后突然之间每个人都从该组收到一条新消息:“/something”。想象一下有几十个人这样做?这很烦人。所以,这些中的任何一个都适合我:
1) 我可以从 BOT 向群组发送消息,而群组中没有 BOT 吗?
2) 我可以有一种只发送消息的 "no methods" BOT 吗?
3) 我可以禁用客户端的 "slash" 图标,这样我就不会在组中有 "bot method war" 了吗?
谢谢
- 不,您不能让机器人在不属于该组的情况下向该组发送消息。
- BotFather可以直接不设置命令,这样客户端就没有命令可以显示了。
- 如果当前聊天中有机器人,它总是在那里,但这是在 BotFather 中没有设置命令的情况下它的作用:
我有一个更好的解决方案:可以直接通过代码自定义命令,depending from the context(即私人聊天、群组等...)
此示例是使用 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!')
})
我正在尝试使用 Telegram BOT 向群组发送消息。首先,我认为知道群聊 ID 就足够了,但事实并非如此。 BOT 必须是该组的一部分。好吧,这有点道理,但问题是:当你将 BOT 添加到一个组(在这种情况下是一个大组)时,每个人都会开始在他们的设备上看到一个新图标,一个 "slash" 图标。他们做什么?他们单击它,查看命令列表,选择其中一个,然后突然之间每个人都从该组收到一条新消息:“/something”。想象一下有几十个人这样做?这很烦人。所以,这些中的任何一个都适合我:
1) 我可以从 BOT 向群组发送消息,而群组中没有 BOT 吗? 2) 我可以有一种只发送消息的 "no methods" BOT 吗? 3) 我可以禁用客户端的 "slash" 图标,这样我就不会在组中有 "bot method war" 了吗?
谢谢
- 不,您不能让机器人在不属于该组的情况下向该组发送消息。
- BotFather可以直接不设置命令,这样客户端就没有命令可以显示了。
- 如果当前聊天中有机器人,它总是在那里,但这是在 BotFather 中没有设置命令的情况下它的作用:
我有一个更好的解决方案:可以直接通过代码自定义命令,depending from the context(即私人聊天、群组等...)
此示例是使用 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!')
})