har*_*uke 3 javascript node.js telegram-bot telegraf
我是这个的初学者。
我正在尝试使用Telegraf API开发 Telegram 机器人。当用户发送某个命令(在我的情况下'/details <number>':)并且机器人必须使用本地存储在机器人文件夹中的特定照片(基于用户键入的数字)时,我被卡住了。
我设法使用 Telegram-bot-api 实现了它,但由于 API 还没有完成,我切换到 Telegraf。我试图理解 Telegraf 的官方文档,但我无法完全理解它。
查看官方示例并将其复制到一个新项目显然有效。
我在本地存储照片时遇到了问题,甚至无法理解“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));
Run Code Online (Sandbox Code Playgroud)
文件路径我确定它是正确的。
现在的代码:
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 **
}
}
})
Run Code Online (Sandbox Code Playgroud)
///在这里阅读 **: 如果我把 bot.command(blabla); 它不起作用,也许是因为它就像'等待'另一个消息输入我猜......我什至尝试使用 url: 相同的结果。
因此,代码的第一部分应该非常糟糕,但其概念是让 switch case 在用户输入'/details <number>'. 我有一个会越来越大的清单,所以我尽量把它做得干净。
如何使用此系统发送照片?PS:一旦我使用 Telegram-bot-api,将函数 sendphoto 放在它应该在的地方,现在它可以正常工作了。
您需要通过source而不是url. GitHub 上有一个示例。
ctx.replyWithPhoto({ source: '/cats/cat1.jpeg' });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4232 次 |
| 最近记录: |