16

Исполнение кода в Телеграм чате

Вчера мне пришёл в голову, как мне показалось, очень забавный вопрос, а можно ли превратить Телеграм в REPL, то есть, сделать так, чтобы можно было исполнять код прямо в чате? (Спойлер: да)


Чтобы решить эту задачу мне нужно:

1. Получить сообщение, которое я посылаю, чтобы исполнить код содержащийся в его тексте

2. Исполнить сам код

3. Отправить результат кода обратно в чат


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


Получение текста сообщений


Как получать уведомления об исходящих сообщениях в Телеграме? Для этого я буду пользоваться сервисом TaaS (https://www.t-a-a-s.ru). Таас использует библиотеку TDLib, которая разрабатывается самим Телеграмом, и она позволяет по сути создавать свой собственный клиент, открывая доступ ко множеству функций. Её довольно трудно устанавливать и использовать, но Таас является очень удобной оболочкой и делает использование максимально простым. С помощью него я могу подписаться на вебхуки по исходящим (моим собственным) сообщениям.


Я захожу в Таас, нажимаю кнопку New Client, создаю клиент для своего номера телефона, и создаю подписку на вебхук с помощью метода "Create Subscription", который будет отправлять запросы на мой сервер при каждом новом исходящем сообщении. В поле hookUrl я ввожу адрес своего сервера, trigger - outgoing_message, и api_key моего клиента.

Исполнение кода и отправка обратно в чат


Для исполнения кода я быстро создаю сервер на Heroku. Я пишу на руби, поэтому сделаю сервер на Rails. Мне нужно создать только один action для контроллера, который будет выполнять код из сообщения и отправляет его обратно в чат. Так же я сделаю дополнительный метод tglib который я могу вызывать из кода для дополнительной отправки сообщений в чат, из, скажем, цикла.

Вот собственно и всё! По сути, таким образом вы можете создать собственный клиент Телеграма, который работает одновременно с вашим обычным, но выполняет весьма необычные функции.

Лига программистов

2.2K постов12K подписчика

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

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

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества