Telegraf技术问询:捕获指定文本后如何调用对应命令动作?
在Telegraf中让纯文本触发对应命令逻辑的实现方法
方法一:提取共享逻辑到独立函数(推荐)
把命令的核心逻辑抽成单独的函数,这样不管是带斜杠的命令还是纯文本输入,都能复用同一段代码,既避免重复,也方便后续维护。
代码示例:
// 定义共享的帮助逻辑函数 const handleHelp = (ctx) => { const helpMessage = ` *Help Bot* 🦺 /start - 启动机器人 /remove - 删除内容 /help - 获取帮助 `; // 用ctx.reply更简洁,自动发送给当前对话用户 return ctx.reply(helpMessage, { parse_mode: 'Markdown' }); }; // 绑定/help命令 bot.command('/help', handleHelp); // 绑定纯文本"help"触发 bot.hears('help', handleHelp);
方法二:直接复用命令处理函数
如果不想单独抽函数,也可以把命令的处理函数赋值给变量,然后在hears中直接调用这个变量:
const helpHandler = ctx => { const helpMessage = ` *Help Bot* 🦺 /start - 启动机器人 /remove - 删除内容 /help - 获取帮助 `; bot.telegram.sendMessage(ctx.from.id, helpMessage, { parse_mode: 'Markdown' }); }; // 绑定命令和纯文本触发 bot.command('/help', helpHandler); bot.hears('help', helpHandler);
注意事项
- 优先用第一种方法,代码结构更清晰,后续修改逻辑只需要改一处即可。
ctx.reply是Telegraf提供的快捷方法,比直接调用bot.telegram.sendMessage更简洁,推荐使用。
内容的提问来源于stack exchange,提问作者Antonio Lopez
相关产品推荐
相关产品推荐

