【问题标题】:How to send a photo stored locally using telegraf API?如何使用电报 API 发送本地存储的照片?
【发布时间】:2019-12-05 23:27:44
【问题描述】:

我是这方面的初学者。

我正在尝试使用 Telegraf API 开发 Telegram 机器人。当用户发送某个命令(在我的情况下为:'/details <number>')并且机器人必须使用本地存储在机器人文件夹中的特定照片(基于用户键入的数字)进行回复时,我被卡住了。

我设法使用 telegram-bot-api 实现了它,但由于 API 还没有完成,我切换到 Telegraf。我试图理解 Telegraf 官方文档,但无法完全理解。

查看official examples 并将其复制到一个新项目显然有效。

我在处理本地存储的照片时遇到问题,甚至在了解“bot.command”的工作原理时也遇到了问题。

这个有效: bot.command('text', ({replyWithPhoto}) => replyWithPhoto(url: <url>)); 当用户键入:'/text' 时,他会根据 URL 取回照片。 我以为本地存储的照片是一样的,但事实并非如此..

var filePath = "./assets/monsters/"+monsterList[2].name+"/sample.png";
bot.command('text', ({replyWithPhoto}) => replyWithPhoto(filePath));

文件路径我确定它是正确的。

现在的代码:

bot.on('text', function(ctx){
   var chat_id = ctx.from.id;
   var text = ctx.message.text;

   var index = 0;
   var commandDetails="";
   if (text/includes("/details ")){
      try{
       var split = text.split(' ');
       index = Number(split[1]);
       commandDetails = '/details'+index.toString();
      }catch(e){}
   }

   switch(text){

      case: 'bla bla bla';break;
      case ''+commandDetails:
            try{
               var filePath = './a.png';
               ///read below **
            }
   }
})

///read here **: 如果我放 bot.command(blabla);它不起作用,也许是因为它就像“等待”另一个消息输入我猜......我什至尝试使用 url: 相同的结果。

所以,代码的第一部分应该很糟糕,但其概念是让 switch case 在用户输入'/details <number>' 时起作用。我有一个越来越大的列表,所以我尽量做到干净。

如何使用此系统发送照片? PS:一旦我使用 Telegram-bot-api,将函数 sendphoto 函数放在它现在应该正常工作的位置。

【问题讨论】:

    标签: javascript node.js telegram-bot telegraf


    【解决方案1】:

    您需要传递source 而不是url。有一个example on GitHub

    ctx.replyWithPhoto({ source: '/cats/cat1.jpeg' });
    

    【讨论】:

      猜你喜欢
      • 2020-03-06
      • 2019-03-28
      • 1970-01-01
      • 1970-01-01
      • 2019-05-14
      • 1970-01-01
      • 2016-07-18
      • 2020-09-06
      • 2016-08-15
      相关资源
      最近更新 更多