【发布时间】:2021-06-11 20:18:02
【问题描述】:
新版本的 telgraf 删除了该端点 https://github.com/telegraf/telegraf/releases/tag/v4.0.0#:~:text=ctx.updateSubTypes
我们如何使用新 API 检测消息类型
这是旧的 ctx 重新运行
【问题讨论】:
标签: telegram-bot telegraf telegraf.js
新版本的 telgraf 删除了该端点 https://github.com/telegraf/telegraf/releases/tag/v4.0.0#:~:text=ctx.updateSubTypes
我们如何使用新 API 检测消息类型
这是旧的 ctx 重新运行
【问题讨论】:
标签: telegram-bot telegraf telegraf.js
这是ctx.updatesubtypesAKA 在telegraf 3 中获取消息类型的另一种用法。
bot.use((ctx, next) => {
console.log(`Message Type is: ${getMessageType(ctx.message)}`);
// Message Type is: STICKER or Message Type is: TEXT
});
const getMessageType = (message) => {
var keys = Object.keys(message);
var messageType = keys.pop();
console.log(messageType);
return messageType.toUpperCase();
};
【讨论】:
keys.pop()
在 4.6.0 中使用 ctx.updatesubtypes 的 good 替代方法是:
bot.use((ctx, next) => {
let message_type = "";
let keys = Object.keys(ctx.message);
if (keys.includes("text")) {
message_type = "text";
} else if (keys.includes("sticker")) {
message_type = "sticker";
} else if (keys.includes("photo")) {
message_type = "photo";
}
console.log(`Message Type is: ${message_type}`);
next();
});
【讨论】: