This is the source code of one of my blog post. To read the full blog post please click here.
-
-
Save unnikked/828e45e52e217adc09478321225ec3de to your computer and use it in GitHub Desktop.
var token = 'xxx'; | |
function doPost(e) { | |
// Make sure to only reply to json requests | |
if(e.postData.type == "application/json") { | |
// Parse the update sent from Telegram | |
var update = JSON.parse(e.postData.contents); | |
// Instantiate our bot passing the update | |
var bot = new Bot(token, update); | |
// Building commands | |
var bus = new CommandBus(); | |
bus.on(/\/start/, function () { | |
this.replyToSender("Congratulations! It works!"); | |
}); | |
bus.on(/\/joke\s*([A-Za-z0-9_]+)?\s*([A-Za-z0-9_]+)?/, randomJoke); | |
// Register the command bus | |
bot.register(bus); | |
// If the update is valid, process it | |
if (update) { | |
bot.process(); | |
} | |
} | |
} | |
function setWebhook() { | |
var bot = new Bot(token, {}); | |
var result = bot.request('setWebhook', { | |
url: // publish your app and put your /excec URL here | |
}); | |
Logger.log(result); | |
} | |
function randomJoke(name, surname) { | |
var firstName = name || null; | |
var lastName = surname || null; | |
var url = 'http://api.icndb.com/jokes/random?escape=javascript'; | |
if (firstName) url += '&firstName=' + firstName; | |
if (lastName) url += '&lastName=' + lastName; | |
var data = JSON.parse(UrlFetchApp.fetch(url).getContentText()); | |
this.replyToSender(data.value.joke); | |
} | |
function Bot (token, update) { | |
this.token = token; | |
this.update = update; | |
this.handlers = []; | |
} | |
Bot.prototype.register = function ( handler) { | |
this.handlers.push(handler); | |
} | |
Bot.prototype.process = function () { | |
for (var i in this.handlers) { | |
var event = this.handlers[i]; | |
var result = event.condition(this); | |
if (result) { | |
return event.handle(this); | |
} | |
} | |
} | |
Bot.prototype.request = function (method, data) { | |
var options = { | |
'method' : 'post', | |
'contentType': 'application/json', | |
'payload' : JSON.stringify(data) | |
}; | |
var response = UrlFetchApp.fetch('https://api.telegram.org/bot' + this.token + '/' + method, options); | |
if (response.getResponseCode() == 200) { | |
return JSON.parse(response.getContentText()); | |
} | |
return false; | |
} | |
Bot.prototype.replyToSender = function (text) { | |
return this.request('sendMessage', { | |
'chat_id': this.update.message.from.id, | |
'text': text | |
}); | |
} | |
function CommandBus() { | |
this.commands = []; | |
} | |
CommandBus.prototype.on = function (regexp, callback) { | |
this.commands.push({'regexp': regexp, 'callback': callback}); | |
} | |
CommandBus.prototype.condition = function (bot) { | |
return bot.update.message.text.charAt(0) === '/'; | |
} | |
CommandBus.prototype.handle = function (bot) { | |
for (var i in this.commands) { | |
var cmd = this.commands[i]; | |
var tokens = cmd.regexp.exec(bot.update.message.text); | |
if (tokens != null) { | |
return cmd.callback.apply(bot, tokens.splice(1)); | |
} | |
} | |
return bot.replyToSender("Invalid command"); | |
} |
Thank you guys for your contributions! I did not know that this blew up over these years! Feel free to share your ideas!
You can join my community on Telegram.
Thank you guys for your contributions! I did not know that this blew up over these years! Feel free to share your ideas!
You can join my community on Telegram.
hi unnikked thank you for share this
i have a little problem i can write code just in one page https://ibb.co/pnS6CNr
i want write code just Return the user message and i that massage input var x ="massage"
The site unnikked.ga is down.
https://www.webpagetest.org/viewlog.php?test=211102_BiDcRH_e38e09f86dda4f4dd766da6ede76176a
Add keyboard to replytosender:
replyToSender(text,keys) { return this.request('sendMessage',{ 'chat_id': this.update.message.from.id, 'text': text, 'parse_mode': "HTML", 'reply_markup': JSON.stringify(keys) }); }
click here you will find many interesting interlocutors - wonderful girls created with the help of artificial intelligence. The site offers a unique experience of communication in real time, where AI adapts to your preferences, creating an atmosphere of comfort and excitement in the conversation. You can choose interlocutors by communication style, interests or just mood, enjoying a pleasant conversation.
Changing the function name to "function doPost(e)" works for me.
Also setWebhook https://gist.github.com/unnikked/828e45e52e217adc09478321225ec3de#gistcomment-3226679
Thanks @unnikked 👍