Загрузить таблицу в Телеграмм

Телеграм-Помощник (Telegram Assistant) — это дополнение для таблиц Google, которое в паре с Телеграм-ботом круглосуточно мониторит сообщения в вашей Телеграм-группе.

При каждом обнаружении в сообщениях ключевого слова из вашего списка бот отправляет вам извещение.

Также бот может автоматически удалять сообщения, например, спам, хейт или матерщину.

Кроме того, авторов таких сообщений бот может удалить из группы и заблокировать.

Конечно, владелец чата или группы может сам отслеживать нужные сообщения, но при большом количестве участников группы это затруднительно, поэтому бот здесь может сильно помочь.

Вы в любой момент можете пополнить или изменить список ключевых слов, а также задать тип реакции на такие сообщения (Извещение, Удаление, Блокировка).

Б. Порядок работы

  1. Установите дополнениеTelegram Assistant, если вы ещё этого не сделали.
  2. Создайте копию таблицы Telegram Assistant (WebApp).
    Пожалуйста, НЕ переименовывайте листы «DebugLog» и «Settings».
  3. Создайте Телеграм-бота в соответствии с Как создать бота? и BotFather.
  4. В ячейку A2 листа Settings введите API Token бота.
  5. Сделайте бота админом группы, которую он должен мониторить.
  6. В настройках бота в группе разрешите ему удалять сообщения.
  7. В созданной копии таблицы Telegram Assistant (WebApp) выберите пункт меню Расширения/Скрипт приложений (Extensions / Apps Script).
  8. Разверните скрипт как веб-приложение. Используйте параметры: Запуск от имени — От моего имени, У кого есть доступ — Все.
  9. Дайте все необходимые разрешения. Это делается 1 раз при первом запуске.
  10. Скопируйте URL веб-приложения и вставьте его в ячейку C2 листа Settings.
  11. Теперь установите триггер, который будет отслеживать появление новых сообщений на листе DebugLog и искать в них ключевые слова. Для этого в меню Расширения/ Telegram Assistant выберите Set Up. Дайте все необходимые разрешения.
  12. Проверьте, всё ли сделано правильно. Для этого отправьте в группу любой текст.
  13. На листе DebugLog появится новая строка. В столбце Date — дата отправки сообщения, в Chat Name — имя группы, в Chat Id — её идентификатор, в User First name — имя отправителя, в User Id — идентификатор отправителя, в Message — текст сообщения, в Message Id — идентификатор сообщения.
  14. Так как это сообщение отправили вы, в поле User Id — ваш идентификатор. Вставьте его в ячейку B2 листа Settings. Так бот будет знать, кому отправлять извещения.
  15. Введите в ячейки A6, A7 и ниже ваши ключевые слова.
  16. Поставьте галочки в нужных местах в столбцах Alarm, Delete и Ban напротив ключевых слов. Если вы поставите флажок в поле Alarm, то при обнаружении в тексте сообщения ключевого слова вам будет отправлено тревожное сообщение. Если вы поставите флажок в поле Delete, то при обнаружении в тексте сообщения ключевого слова это сообщение будет удалено автоматически. Если вы поставите флажок в поле Ban, то при обнаружении в тексте сообщения ключевого слова этот пользователь будет заблокирован в группе автоматически.
  17. Сделайте ещё проверку. Для этого отправьте в группу текст, содержащий одно из ключевых слов, напротив которого установлен флажок в поле Alarm. Вам будет отправлено извещение.
  18. Отправьте в группу текст, содержащий одно из ключевых слов, напротив которого установлен флажок в поле Delete. Это сообщение будет удалено из группы автоматически.
  19. Отправьте в группу текст, содержащий одно из ключевых слов, напротив которого установлены флажки в поле Alarm и в поле Ban. Вам будет отправлено извещение, а сам пользователь будет заблокирован в группе автоматически. Заметьте, что владельца группы заблокировать невозможно. Поэтому для проверки можете попросить написать запрещённое слово кого-то другого.
  20. Для разблокировки пользователь должен написать боту любое сообщение. После этого убедитесь, что на листе DebugLog строка с его сообщением является последней. Для этого можно лишнее удалить или скопировать в конец таблицы строку с его данными. Затем в меню Расширения/ Telegram Assistant выберите UnBan User. Пользователь будет разблокирован и ему будет направлено сообщение с пригласительной ссылкой для вступления в группу.
Еще по теме:  Дублировать Телеграм на телефоне

Видео для тех, кто больше любит смотреть.

Google Таблицы в телеграм боте | Интеграция Google Sheets с телеграм ботом

21 мая 2022, обновления:
1. Сокращёна последовательность действий, пункты Set Webhook и Set trigger объединены в один Set Up.
2. Добавлена возможность автоматической блокировки пользователя и его разблокировки из меню.

Видео 2 — обновлённый порядок действий + разблокировка.

Источник: baublys.ru

Telegram в качестве хранилища данных для IT проектов

Добрый день, сегодня я хотел бы поделится с Вами проблемами и их необычными решениями, которые встретились при написании небольших IT проектов. Сразу скажу, что статья для тех, кто хоть немного разбирается в разработке телеграмм ботов, баз данных, SQL и в языке программировании python.

Весь проект выложен на github, ссылка будет в конце статьи.

image

Основная проблема

Изначально я хотел для себя написать простенького телеграмм бота счетчика калорий, который получает число от пользователя и возвращает сколько калорий осталось до нормы на день. То есть нужно хранить грубо говоря пару переменных для каждого пользователя.

В итоге нужно было выбрать способ хранить эти данные.

  1. Вариант — глобальные переменные, оперативная память. Вариант сразу провальный, так как при падении программы мы теряем все
  2. Вариант — запись в файл на диске. Для такого проекта может и пойдет, но я планировал деплой бота на heroku, который каждый день стирает все данные с диска. Так что этот вариант не подошел
  3. Вариант — Google-таблицы. Изначально я хотел остановится на этом варианте, но начал разбираться и понял, что есть ограничение на количество запросов к таблице, и чтобы только начать использовать таблицу нужно написать кучу строк кода и разобраться в их не самом простом апи
  4. Вариант — база данных. Да, это наилучший вариант во всем. Но для такого проекта это даже смешно использовать. Также развертывание и поддержка базы данных на стороннем сервере обойдется в копеечку.

Решение

Идея очень простая, для хранения данных мы будем использовать in memory базу данных sqllite, так как она уже встроена в python 3 и будем делать бэкапы нашей таблицы на сервера Telegram с небольшим интервалом (примерно каждые 30 секунд) и бэкап при закрытие процесса программы.

Если сервер упал, то при первом запросе мы автоматически загрузим нашу таблицу с сервера Telegram и восстановим данные в sqllite.

Можно использовать и любую другую in memory бд, кому как нравится.

Плюсы

  1. Быстродействие — за счет работы с данными в оперативной памяти скорость выполнения программы даже быстрее, чем при использовании бд на стороннем сервере (графики скорости выполнения и тестирования будут в конце)
  2. Бесплатно — не нужно покупать сторонние сервера для баз данных и все данные хранятся в виде бэкапа бесплатно на серверах Telegramа
  3. Относительно надежно — если сервер падает по непонятным причинам, то мы максимум теряем данные за последние 30 секунд (время интервала бэкапов), для рабочего прототипа или небольшого проекта будет достаточно.
  4. Минимальные затраты при переходе на обычную бд — нужно заменить данные подключения, убрать код бекапов и перенести данные таблицы из бэкапа на новую бд.
Еще по теме:  Через сколько после удаления можно восстановить Телеграмм

Минусы

  1. Отсутствие горизонтального масштабирования
  2. Нужно два аккаунта в Telegramе (один для администратора, другой для тестирования пользователя)
  3. Сервер не будет работать в России из-за блокировок
  4. В комментариях я думаю Вы найдете еще десяток других нюансов.

Время говнокодить

Напишем простой кликер и проведем тесты на скорость выполнения.

Бот будет написан на языке программирования python с использованием асинхронной библиотеки взаимодействия с api телеграмма aiogram.

Первым делом нужно заполнить настройки бота, не буду рассказывать как получить токен от BotFather, уже сотни статей есть на эту тему.

Также нам нужен второй аккаунт в телеграмме для админа, в котором будут сохраняться наши бекапы.

Для того, чтобы получить admin_id и config_id нам нужно запустить бота с аккаунта администратора и написать боту «admin», после чего он создаст первый бекап, и напишет ваш admin_id, config_id. Заменяем и запускаем бота заново.

#———————Настройки бота————————- # Ваш токен от BotFather TOKEN = ‘1234567:your_token’ # Логирование logging.basicConfig(level=logging.INFO) bot = Bot(token=TOKEN) dp = Dispatcher(bot) # Ваш айди аккаунта администратора и айди сообщения где хранится файл с данными admin_id=12345678 config_id=12345 conn = sqlite3.connect(«:memory:») # настройки in memory бд cursor = conn.cursor()

Так теперь пройдемся по основной логике бота

Если боту приходит сообщение со словом «admin», то мы создаем таблицу пользователей с такой моделью данных:

  • chatid — уникальный чат айди пользователя
  • name — имя пользователя
  • click — количество кликов
  • state — значение для машины состояний, в данном проекте не используется, но в более сложных без него не обойтись

# Логика для администратора if message.text == ‘admin’: cursor.execute(«CREATE TABLE users (chatid INTEGER , name TEXT, click INTEGER, state INTEGER)») cursor.execute(«INSERT INTO users VALUES (1234, ‘eee’, 1,0)») conn.commit() sql = «SELECT * FROM users » cursor.execute(sql) data = cursor.fetchall() str_data = json.dumps(data) await bot.send_document(message.chat.id, io.StringIO(str_data)) await bot.send_message(message.chat.id, ‘admin_id = <>’.format(message.chat.id)) await bot.send_message(message.chat.id, ‘config_id = <>’.format(message.message_id+1))

Логика для пользователя

Первым делом пытаемся получить из in memory бд данные пользователя, который отправил сообщение. Если ловим ошибку, то загружаем данные с бекапа сервера Telergam, заполняем нашу бд данными с бекапа и повторно пытаемся найти пользователя.

# Логика для пользователя try: sql = «SELECT * FROM users where chatid=<>».format(message.chat.id) cursor.execute(sql) data = cursor.fetchone() # or use fetchone() except Exception: data = await get_data() cursor.execute(«CREATE TABLE users (chatid INTEGER , name TEXT, click INTEGER, state INTEGER)») cursor.executemany(«INSERT INTO users VALUES (. )», data) conn.commit() sql = «SELECT * FROM users where chatid=<>».format(message.chat.id) cursor.execute(sql) data = cursor.fetchone() # or use fetchone()

Если мы нашли пользователя в бд, то обрабатываем кнопки:

  • При нажатие «Клик» мы обновляем количество кликов у данного пользователя
  • При нажатие «Рейтинг» мы выводим список пятнадцати человек у которых наибольшее количество кликов.

#При нажатии кнопки клик увеличиваем значение click на один и сохраняем if data is not None: if message.text == ‘Клик’: sql = «UPDATE users SET click = <> WHERE chatid = <>».format(data[2]+1,message.chat.id) cursor.execute(sql) conn.commit() await bot.send_message(message.chat.id, ‘Кликов: <> ‘.format(data[2]+1)) # При нажатии кнопки Рейтинг выводим пользователю топ 10 if message.text == ‘Рейтинг’: sql = «SELECT * FROM users ORDER BY click DESC LIMIT 15» cursor.execute(sql) newlist = cursor.fetchall() # or use fetchone() sql_count = «SELECT COUNT(chatid) FROM users» cursor.execute(sql_count) count=cursor.fetchone() rating=’Всего: <>n’.format(count[0]) i=1 for user in newlist: rating=rating+str(i)+’: ‘+user[1]+’ — ‘+str(user[2])+’n’ i+=1 await bot.send_message(message.chat.id, rating) else: await bot.send_message(message.chat.id, ‘Вы не зарегистрированы’)

Напишем логику для регистрации пользователя

Пытаемся найти пользователя в бд, если его нет, то добавляем новую строку в таблицу и делаем бэкап.

Если ловим ошибку, то подгружаем последний бэкап, заполняем таблицу и повторяем попытку регистрации.

sql_select = «SELECT * FROM users where chatid=<>».format(message.chat.id) sql_insert = «INSERT INTO users VALUES (<>, ‘<>’, <>,<>)».format(message.chat.id,message.chat.first_name, 0, 0) try: cursor.execute(sql_select) data = cursor.fetchone() if data is None: cursor.execute(sql_insert) conn.commit() await save_data() except Exception: data = await get_data() cursor.execute(«CREATE TABLE users (chatid INTEGER , name TEXT, click INTEGER, state INTEGER)») cursor.executemany(«INSERT INTO users VALUES (. )», data) conn.commit() cursor.execute(sql_select) data = cursor.fetchone() if data is None: cursor.execute(sql_insert) conn.commit() await save_data() # Создаем кнопки button = KeyboardButton(‘Клик’) button2 = KeyboardButton(‘Рейтинг’) # Добавляем kb = ReplyKeyboardMarkup(resize_keyboard=True).add(button).add(button2) # Отправляем сообщение с кнопкой await bot.send_message(message.chat.id,’Приветствую <>’.format(message.chat.first_name),reply_markup=kb)

Еще по теме:  Как мило на английском назвать ТГ канал на

Так, ну и самое интересное.

Сохранение и получение данных с сервера Telergam

Автопостинг в телеграм по готовому контент-плану

Telegram заслужил такую же любовь в Рунете, как ВКонтакте и Instagram*. Это связано с тем, что соцсеть поддерживает разные форматы контента, позволяет пользователям общаться друг с другом и делиться точкой зрения на различных блогах. Также каждый человек может создать специального чат-бота, чтобы собирать информацию о подписчиках, организовывать опросы или даже запускать полноценные курсы. Хоть Телеграмм и уникален по своему формату, как и во всех социальных сетях, для него важна регулярность выхода обновлений. Пользователям необходимо составлять контент-планы и автоматизировать появление информации. В этом вам поможет отложенный постинг в ТГ, запущенный с помощью SmmBox.

Подключение телеграм-бота для автопостинга

Когда вы перейдете на сайт smmbox.com и зарегистрируетесь, привяжите к нему свою страницу Telegram. Сделайте это, создав бота по подробной инструкции сервиса или этой статьи. Следуя руководству, вы легко справитесь с настройками.

Как пошагово добавить бота для запуска автопостера Телеграмма:

1. В разделе «Мои страницы и аккаунты» кликните «Подключить».

Бот обязателен для подключения автопостинга к Телеграм

Этот чат является универсальным помощником по созданию ботов в Телеграмм

Начните чат, выслав ему сообщение «/newbot».

Выберите действие из предложенного списка или введите его вручную

3. Вас попросят ввести название для чат-бота. Обратите внимание, что в конце предложенного имени обязательно ставится слово «bot». После его отправки придет сообщение с токеном в строчке:
«Use this token to access the HTTP API:…»

Пример отправки корректного названия бота для подключения отложенного постинга в ТГ

4. Скопируйте длинный номер и введите его в соответствующее поле на сайте для подключения телеграм-бота.

Добавьте номер токена бота для автопостинга и кликните Сохранить

5. В приложении социальной сети зайдите в ваш канал и добавьте созданный аккаунт как администратора.

В меню канала добавьте бота для автопостинга как администратора

6. Теперь вернитесь к подключению и впишите в новое поле ссылку на канал/чат.

Добавьте страницу в ТГ для отложенного постинга

Следуя пошаговой инструкции, вы подключите профиль Телеграмма к площадке. Созданный бот может быть администратором нескольких чатов. Если вы захотите подключить другие группы, то просто прикрепите их к аккаунту.

Попробуйте сервис SmmBox бесплатно

Дарим 14 дней самого мощного тарифа VIP при регистрации по ссылке.

Как запланировать отложенный пост в ТГ

Для автоматического выхода новостей в сервисе есть соответствующий раздел автопостинга. Но мы рекомендуем начинать работу не с него, а с этапа планирования.

Подготовка к публикации

В первую очередь узнайте, в какое время вам лучше выкладывать статьи, аудиосообщения или видеофайлы. Нажмите на вкладку «Аналитика» и вставьте ссылку на канал. Система посчитает показатели и отобразит их на удобном графике.

Аналитика поможет правильно подобрать контент и все настройки для автопостинга

В разделе «Лучшее время» узнайте, в какие часы подписчики заходят в профиль. В этот период лучше публиковать новости в блоге.

Лучшее время для автопостинга в Телеграм на следующую неделю

Перейдите в раздел «Самые лучшие посты» и посмотрите статистику за последние 30 дней. Так вы узнаете, какие материалы собрали максимум реакций. Темы этих записей используйте как основу для последующих статей, ведь люди уже оценили их и посчитали полезными.

Статистика нужна для выбора правильных тем отложенных постов

Быстрый и глубокий анализ поможет вам оставаться интересными для подписчиков и делать по-настоящему качественный контент. Полученную информацию вы можете использовать дальше для подготовки отложенных записей в Телеграмме.

Откройте вкладку «Контент-план» и выберите продвинутый вариант. Все прописанные ранее часы, когда активны пользователи, перенесите на график.

Контент планер для Телеграмм

Добавьте к запланированному контенту цветные метки с темами материалов. Для замены стандартных названий маркеров кликните в поле с ними и нажмите «Редактировать». Удалите все ненужные метки и сделайте собственные выделители.

Цветные метки появятся в разделе отложенного постинга в SmmBox

Когда вы сохраните контент-план, система его запомнит и синхронизирует с автопостером. И вы сможете перейти непосредственно к загрузке файлов.

Пример составленного контент-плана для последующего автопостинга в Телеграмм

Рейтинг
( Пока оценок нет )
Загрузка ...