英文:
Telegram bot using google apps script doesn't work
问题
这是我的代码:
var apiToken = "token";
var appUrl = "https://script.google.com/macros/s/link/exec";
var apiUrl = "https://api.telegram.org/bot"+apiToken;
var commands = {
"/start": commandStart,
};
function setWebhook(){
var url = apiUrl + "/setWebhook?url="+appUrl;
var res = UrlFetchApp.fetch(url);
Logger.log(res);
}
function deleteWebhook(){
var res = UrlFetchApp.fetch(apiUrl+"/deleteWebhook");
Logger.log(res);
}
function doPost(e){
var webhookData = JSON.parse(e.postData.contents);
var from = webhookData.message.from.id;
var text = webhookData.message.text;
if (text.charAt(0) == "/") {
commands[text](from);
} else {
sendMessage("You said: "+text, from);
}
}
function doGet(e){
return ContentService.createTextOutput("Method GET not allowed");
}
function sendMessage(txt, receiver) {
var encoded = encodeURIComponent(txt);
var url = apiUrl+"/sendMessage?parse_mode=HTML&chat_id="+receiver+"&text="+encoded;
var response = UrlFetchApp.fetch(url);
Logger.log(response);
}
function commandStart(receiver){
sendText("Hello, skinbag", receiver);
}
我已经尽量只返回翻译好的部分代码,如果你需要进一步的帮助,请告诉我。
英文:
here's my code:
var apiToken = "token";
var appUrl = "https://script.google.com/macros/s/link/exec";
var apiUrl = "https://api.telegram.org/bot"+apiToken;
var commands = {
"/start": commandStart,
};
function setWebhook(){
var url = apiUrl + "/setWebhook?url="+appUrl;
var res = UrlFetchApp.fetch(url);
Logger.log(res);
}
function deleteWebhook(){
var res = UrlFetchApp.fetch(apiUrl+"/deleteWebhook");
Logger.log(res);
}
function doPost(e){
var webhookData = JSON.parse(e.postData.contents);
var from = webhookData.message.from.id;
var text = webhookData.message.text;
if (text.charAt(0) == "/") {
commands[text](from);
} else {
sendMessage("You said: "+text, from);
}
}
function doGet(e){
return ContentService.createTextOutput("Method GET not allowed");
}
function sendMessage(txt, receiver) {
var encoded = encodeURIComponent(txt);
var url = apiUrl+"/sendMessage?parse_mode=HTML&chat_id="+receiver+"&text="+encoded;
var response = UrlFetchApp.fetch(url);
Logger.log(response);
}
function commandStart(receiver){
sendText("Hello, skinbag", receiver);
}
I've been trying to make it work for 5 hours now. Everything seems right, but it just doesn't work.
By doesn't work I mean that it doesn't send any messages
But if I change sendMessage method by hard-coding my own id and calling method directly by "execute" button it actually sends me a message
function sendMessage() {
var encoded = encodeURIComponent("SomeMessage");
var url = apiUrl+"/sendMessage?parse_mode=HTML&chat_id="+MyId+"&text="+encoded;
var response = UrlFetchApp.fetch(url);
Logger.log(response);
}
I think something might be off with doPost() method.
I tried re-establishing webhook by calling "deteleWebhook" and then "setWebhook", I tried simplifying the code to just "doPost" and "sendMessage" with my id (still didn't work), I tried reading docs (didn't find anything), I tried googling a lot.
I just don't know why it won't work
答案1
得分: 0
不要忘记在部署时使其对所有人可用。那就是问题所在。我只使其对我可用。
是的,我很愚蠢。但也许它能帮助将来的某人。
英文:
Don't forget to make it avaiable to everyone when deploying. That was the problem. I made it avaiable to me only
Yes, I am stupid. But maybe it can help someone in the future
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论