繁体   English   中英

通过node.js电报Bot sendPhoto

[英]Telegram Bot sendPhoto via node.js

我正在使用此功能通过node.js发送照片,但这不起作用。 telegram-bot-api https://www.npmjs.com/package/telegram-bot-api

var telegram = require('telegram-bot-api');

var api = new telegram({
    token: '<PUT YOUR TOKEN HERE>',
});

api.sendPhoto({
    chat_id: <YOUR CHAT ID>,
    caption: 'This is my test image',

    // you can also send file_id here as string (as described in telegram bot api documentation)
    photo: '/path/to/file/test.jpg'
})
.then(function(data)
{
    console.log(util.inspect(data, false, null));
});

但是我有这个错误

 fn = function () { throw arg; };
                           ^
StatusCodeError: 403 - [object Object]

我已经解决了问题。 看起来您正在使用自己的漫游器的聊天ID发送无效的照片。 因此,您将收到403禁止的错误(请参阅电报漫游器错误api

要使用sendPhoto功能,您将必须使用该用户而不是您的机器人用户的聊天ID。 我对您的代码做了很少的修改,以使您清楚。 此代码将从message.chatid变量获取用户的聊天ID。 只需替换此代码中的令牌并提及您的图片网址,然后尝试即可。

PS:向该机器人发送任何消息,它将发送照片作为响应。

var telegram = require('telegram-bot-api');

var api = new telegram({
    token: 'Your BOT token',
    updates: {
                enabled: true,
                get_interval: 1000
             }
});
api.on('message', function(message)
{
    var chat_id = message.chat.id;
        console.log("This is the user's chat id"+chat_id);

api.sendPhoto({
    chat_id : message.chat.id,
    caption: 'This is my test image',
    photo: 'image.jpeg'//replace your image url here
})
.then(function(data)
{
    console.log(data);
});
});

如telegram bot api文档中所述,您可以使用两种不同的方式发送文件:

1-按图像网址发送图像:
因此,您应该将photo参数设置为图片网址,如下所示

 api.sendPhoto({ chat_id: <YOUR CHAT ID>, caption: 'image sent by uploading from url', // first you upload image on a url and send url as a parameter photo: 'https://whatbook.org/wp-content/uploads/2015/06/Download-Telegram-App-For-PC-Laptop-Windows-XP-7-8-MAC-OS.png' }) .then(function(data) { console.log(util.inspect(data, false, null)); }); 

2-通过file_id发送图像

在电报服务器中上传的每个文件都有一个ID,您可以使用该ID避免将图像重新上传到电报服务器,因此在api中,您应该传递图像文件的file_id,如下所示:

  api.sendPhoto({ chat_id: <YOUR CHAT ID>, caption: 'the image sent by file_id', // it is a file_id that you get when someone upload an image to photo: 'AgADBAADZbo1G14XZAfdtXnWB5anFpRbYRkABMRWzQmdc4EQbPcCAAEC' }) .then(function(data) { console.log(util.inspect(data, false, null)); }); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM