Namokonov

android

Jun 23rd, 2021 (edited)
702
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Напишем-ка бота
  2. Статья: https://spreadsheets.ru/sobirator
  3.  
  4. МЫ=
  5. Канал “Google Таблицы” в Телеграме: @renat_shagabutdinov
  6. Наш чат в Телеграме: @t.me/google_spreadsheets_chat
  7. Оглавление канала — все статьи: https://docs.google.com/spreadsheets/d/1u0aRlwb0rQHbjE9avbgCqIJSQ3EvPfTxT-h54jTQh8I/edit#gid=370845400
  8.  
  9.  
  10. var botToken = ''; //сюда нужно ввести токен
  11. var webAppUrl = '';
  12. var telegramUrl = "https://api.telegram.org/bot" + botToken;
  13.  
  14. /////
  15. function mergeBigData(data) {
  16.   return data
  17.     .map(t => t[6] + '––––' + t[9] + '––––' + t[10])
  18.     .join('\n\n')
  19. }
  20.  
  21. function getBigData() {
  22.   return SpreadsheetApp
  23.     .getActive()
  24.     .getSheetByName('обратная связь')
  25.     .getDataRange().getValues();
  26. }
  27.  
  28. function mixerBigData(msg) {
  29.   msg = msg.split(',');
  30.   date1 = new Date(('2015-' + msg[0] + 'T00:00:00'));
  31.   date2 = new Date(('2015-' + msg[1] + 'T00:00:00'));
  32.  
  33.   return data = getBigData().filter(y => (new Date(y[6]).getTime() >= date1.getTime())
  34.     && (new Date(y[6]).getTime() <= date2.getTime()))
  35. }
  36.  
  37. function doPost(e) {
  38.   //парсим объет, который пришёо
  39.   e = JSON.parse(e.postData.contents)
  40.   const msg = e['message']['text'];
  41.   const fromId = e['message']['from']['id']
  42.   const fromUsername = e['message']['from']['username']
  43.  
  44.   //логируем в таблицу
  45.   SpreadsheetApp.getActive()
  46.   .getSheetByName('логи').appendRow([new Date(), JSON.stringify(e)])
  47.  
  48.   //список юзернеймов телеграма, которым вы разрешили использовать функционал бота
  49.   const trueList = ['namokonov', 'namokonov', 'namokonov'];
  50.  
  51.   //проверяем, правильный ли юзернейм написал
  52.   if (trueList.includes(fromUsername)) {
  53.  
  54.     // проверяем присланное сообщение, пусть метрикой будет наличие запятой
  55.     if (/\,/.test(msg)) {
  56.  
  57.       //кажется всё ок - отправляем пользоователя ответ
  58.  
  59.       //собираем наше сообщение и отправляем по 4096 символов –
  60.       //(максимум для отправкм в телеграме
  61.       var messages = mergeBigData(mixerBigData(msg))
  62.       sendMessage(fromId, message = messages.slice(0, 4095))
  63.   }
  64. };
  65. }
  66.  
  67. function setWebhook() {
  68.   var response = UrlFetchApp.fetch(telegramUrl + '/setWebhook?url=' + webAppUrl);
  69.   Logger.log(response.getContentText());
  70. }
  71.  
  72. function deleteWebhook() {
  73.   var response = UrlFetchApp.fetch(telegramUrl + '/deleteWebhook?url=' + webAppUrl);
  74.   Logger.log(response.getContentText());
  75. }
  76.  
  77. function sendMessage(chatId, message, parse_mode = 'html') {
  78.   return UrlFetchApp.fetch(telegramUrl + '/sendMessage', {
  79.     method: 'post',
  80.     contentType: 'application/json',
  81.     payload: JSON.stringify({
  82.       chat_id: chatId,
  83.       text: message,
  84.       parse_mode: parse_mode,
  85.     })
  86.   }).getContentText()
  87. }
  88.  
  89.  
RAW Paste Data