【问题标题】:Alternative of ctx.updateSubTypes Telgraf 4ctx.updateSubTypes Telgraf 4 的替代品
【发布时间】: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


    【解决方案1】:

    这是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();
    };
    

    来源是:https://stackoverflow.com/a/58052712/10694425

    【讨论】:

    • 很好,但并不总是最后一个 keytextkeys.pop()
    【解决方案2】:

    在 4.6.0 中使用 ctx.updatesubtypesgood 替代方法是:

    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();
    });
    

    【讨论】:

      猜你喜欢
      • 2012-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      相关资源
      最近更新 更多