TelegramボットがsendMessageをTelegramサーバーに送信すると、エラーメッセージが表示されます。
{"ok":false,"error_code":400,"description":"Bad Request: message text is empty"}
今朝、問題が発生しました。その前に、ボットがエラーなく1年間動作しました。 GetUpdatesコマンドは以前と同様に機能します。 GET HTTPメソッドを使用してコンマを送信します。
https://api.telegram.org/bot<MyToken>/sendMessage
uTF-8でエンコードされたデータが添付されている場合:
{"chat_id":123456789,"text":"any text"}
誰かがこれに遭遇しましたか?
それでも問題が解決しない場合は、カールリクエストを変更してみてください。ヘッダーを追加する'Content-Type: application/json'
および-d '{"chat_id":133057877,"text":"any text"}'
修正された問題
私もこのエラーを受け取りました。私は sendMessage() メソッドを「低レベル」でのみ使用しました Node https :
const https = require('https');
const data = JSON.stringify({
chat_id: config.telegram.chatId,
text: 'some ASCII text'),
});
const options = {
hostname: 'api.telegram.org',
port: 443,
path: `/bot${config.telegram.botToken}/sendMessage`,
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': data.length
}
};
const req = https.request(options, (res) => {
let chunks = [];
res.on('data', chunk => chunks.Push(chunk));
res.on('end', () => {
const resBody = Buffer.concat(chunks).toString('utf8');
if (res.statusCode === 200) {
console.log(`Message sent`);
} else {
console.error(`${res.statusCode} ${res.statusMessage} ${res.headers['content-type']}
${resBody}`)
}
});
});
req.on('error', (error) => {
reject(error)
});
req.write(data);
req.end();
ASCIIテキストの場合は問題ありませんでしたが、ASCII以外のテキストの場合は次のようになりました。
const data = JSON.stringify({
chat_id: config.telegram.chatId,
text: 'Привет Мир!'),
});
エラー:
400 Bad Request application/json
{"ok":false,"error_code":400,"description":"Bad Request: message text is empty"}
私の場合、コンテンツの長さは無効な長さで計算されました'Content-Length': data.length
(Telegramでは無効?...)なので、このヘッダーをコメント化すると、UTF-8
!
headers: {
'Content-Type': 'application/json',
//'Content-Length': data.length
}
ボットが空のメッセージを送信している状態になっています。どういうわけか、その状態が変更されるまで、同じURL上の他の要求は処理されません。私のto-doリストボットで行ったように、空である可能性のあるリストを印刷していますか?空のメッセージ出力セグメントが見つかるまで、コードのセグメントを1つずつ実行することを検討できます。
フォームをエミュレートしてメッセージを送信する別の方法:
curl -s -X POST https://api.telegram.org/bot{apitoken}/sendMessage \ -F chat_id='-1234567890' -F text='test message'