Telegram 机器人通过 node.js 发送照片
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]
如电报机器人 api documentation 中所述,您可以使用两种不同的方式发送文件:
1-逐张发送url :
所以你应该将照片参数设置为图像 url,如下所示
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));
});
我找到问题了。看起来您正在使用您自己的机器人的聊天 ID 发送无效的照片。因此,您收到 403 禁止错误(参考 telegram bot errors api)
要使用 sendPhoto 功能,您必须使用用户的聊天 ID,而不是您的 bot 用户。我对您的代码进行了一些修改以使您清楚。此代码将从 message.chatid
变量中获取用户的聊天 ID。
只需在此代码中替换您的令牌并提及您的 image url 并尝试一下。
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);
});
});
我正在使用此功能通过 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]
如电报机器人 api documentation 中所述,您可以使用两种不同的方式发送文件:
1-逐张发送url :
所以你应该将照片参数设置为图像 url,如下所示
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));
});
我找到问题了。看起来您正在使用您自己的机器人的聊天 ID 发送无效的照片。因此,您收到 403 禁止错误(参考 telegram bot errors api)
要使用 sendPhoto 功能,您必须使用用户的聊天 ID,而不是您的 bot 用户。我对您的代码进行了一些修改以使您清楚。此代码将从 message.chatid
变量中获取用户的聊天 ID。
只需在此代码中替换您的令牌并提及您的 image url 并尝试一下。
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);
});
});