Когда-то давно в Telegram все пересланные сообщения содержали информацию об авторе, в частности, ID. Благодаря этому можно было легко делать ботов для обратной связи, когда юзер пишет боту, а автор бота через него отвечает. К сожалению, в марте 2019 года всё изменилось и пересланные сообщения от некоторых людей потеряли информацию об отправителях.
Для решения этой проблемы разработчики ботов стали сохранять ID авторов сообщений на стороне бота, а затем провязывать эти айдишники, но я лично считаю такой подход избыточным, т.к. такие данные, по сути, должны храниться вечно (мало ли, на какое сообщение вы решите ответить). В результате появился этот бот. Из плюсов: элементарно контейнеризируется, поскольку хранит всё в оперативной памяти (например, списки блокировок). Из минусов: поддерживает только те сообщения от пользователей, где можно добавлять подпись или редактировать текст, не поддерживает возможность сделать «ответ» (reply) на сообщение (в теории, решаемо) и не позволяет корректно реагировать на редактирование сообщений. Лично меня устраивает такой расклад.
Бот обратной связи в Телеграм feedback bot Telegram
Принцип работы
Сообщения от пользователей копируются методом copyMessage в чат к админу (или админам) с добавлением ID пользователя в виде хэштега, например, #id1234567, к тексту или подписи к медиафайлу. Когда администратор отвечает на сообщение, этот хэштег извлекается, парсится и используется в качестве получателя.
Как переписку видит пользователь:
В свою очередь, администратор видит так (и может пользоваться расширенным набором команд):
Установка
Системные требования:
- Python 3.9 и выше (не нужно при запуске с Docker);
- Linux (должно работать на Windows, но могут быть сложности с установкой);
- Systemd (для запуска через systemd);
- Docker (для запуска с Docker). Старые версии Docker требуют отдельно docker-compose.
Просто потестировать (не рекомендуется)
- Клонируйте репозиторий;
- Перейдите ( cd ) в склонированный каталог и создайте виртуальное окружение Python (Virtual environment, venv);
- Активируйте venv и установите все зависимости из requirements.txt ;
- Скопируйте env_example под именем .env (с точкой в начале), откройте его и заполните переменные;
- Внутри активированного venv: python -m bot .
Systemd
- Выполните шаги 1-4 из раздела «просто потестировать» выше;
- Скопируйте feedback-bot.example.service в feedback-bot.service , откройте и отредактируйте переменные WorkingDirectory и ExecStart ;
- Скопируйте (или создайте симлинк) файла службы в каталог /etc/systemd/system/ ;
- Активируйте сервис и запустите его: sudo systemctl enable feedback-bot —now ;
- Проверьте, что сервис запустился: systemctcl status feedback-bot (можно без root-прав).
Docker + Docker Compose
- Возьмите файл docker-compose.example.yml из репозитория и переименуйте как docker-compose.yml ;
- Возьмите файл env_example там же, переименуйте как .env (с точкой в начале), откройте и заполните переменные;
- Запустите бота: docker compose up -d (или docker-compose up -d на старых версиях Docker);
- Проверьте, что контейнер поднялся: docker compose ps
Локализация
Если вы хотите изменить тексты в боте, ознакомьтесь с информацией в Wiki. В настоящий момент поддерживается только изменение текстов сообщений, но не описаний в меню команд
Папку bot/locales в случае с развертыванием бота в Docker можно переопределить, подсунув её снаружи как volume.
Open Source Agenda is not affiliated with «Telegram Feedback Bot» Project. README Source: MasterGroosha/telegram-feedback-bot
Источник: www.opensourceagenda.com
Как создать своего бота в BotFather?
В мессенджере Telegram есть бот BotFather — ассистент, который помогает пользователям управлять ботами, но управление в нем многим может показаться сложным.
Именно поэтому, мы решили рассказать вам о том, как его использовать и создать своего бота через BotFather.
Какие функции есть в BotFather?
Как и говорилось выше, это полноценный инструмент для управления своих ботов в Telegram.
В боте есть 2 основные команды.
- Команда /newbot позволяет создать нового бота.
- /mybots запускает редактор настроек ваших ботов.
6 команд для редактирования.
- /setname открывает редактор имен ботов.
- /setdescription открывает редактор описания бота. Короткое описание вашего бота. Допускается не более 512 символов. Этот текст будет виден пользователю при инициализации диалога.
- /setabouttext — запускает редактор информации»о боте». Информация о боте отображается в его профиле, максимум 120 символов.
- /setuserpic — отвечает за запуск редактора фотографии профиля бота. Размер фотографии профиля должен быть не менее чем 200×200 пикселей. Также желательно загружать квадратные изображения.
- /setcommands — запускает редактор списка команд бота. Команды нужны для управления и взаимодействия с ботом. Каждая команда начинается с косой черты «/», можно использовать латинские буквы, цифры, а также подчеркивания. Но не более 32 символов. Также необходимо задать описание команды. Данный список команд можно увидеть написав косую черту «/» в диалоге с ботом.
- /deletebot — команда для удаления бота
7 команд для настройки бота.
- /token — команда для генерации токена.
- /revoke — данная команда отзывает токен.
- /setinline — команда включения inline mode.
- /setinlinegeo — включение местоположения.
- /setinlinefeedback — открывает настройки обратной связи
- /setjoingroups — позволяет включить и отключить возможность добавления ботов в группы.
- /setprivacy — команда для активации режима конфиденциальности в группах. Вы можете указать какие сообщения бот может получать в группах.
После ознакомления с командами можно приступать и к созданию бота.
Создаем своего бота и получаем токен.
Это основной момент в создании бота. В нем нужно указать его название, задать адрес ссылки, описание, установить картинку бота и получить токен.
Для создания бота введите в чат с BotFather команду /newbot. Бот попросит вас ввести название для нового бота. Можете указать в любом удобном формате, поддерживается кириллица и латиница, например: «тестовый bot». — Имя будет отображаться в заголовке и в информации о боте.
После того, как вы задали боту имя, нужно указать его сокращенное название для ссылок. Оно должно обязательно содержат приставку «bot» на конце. Например: «Test_Bot». — Сокращенное название может содержать от 5 до 32 и только латинских символов.
Если все выполнено верно ваш бот будет зарегистрирован в Телеграм и BotFather выдаст вам токен бота в таком формате: API:764645301:AAGdRMMi_bF67lCkJjA0DKQNOwoATJQMWXk
Этот токен можно использовать для авторизации бота и отправки запросов к Bot API.
Создание токена
Токен — это секретный ключ-идентификатор бота. Токен используется при обращении к Telegram API для идентификации бота.
Если вы потеряли, или у вас украли token, который был выдан при создании бот. Вы можете сгенерировать его заново. Для этого используйте команду /token, выберите нужного бота, далее ботфазер выдаст вам новый токен.
Теперь у вас есть бот и его token. Вы можете управлять им, устанавливать ему фото профиля, задавать описание и приветствие. А по токену вы сможете подключить Телеграм бота с его программной частью на сервере.
Источник: botcreators.ru
Форма обратной связи с отправкой письма в Телеграм. Отправка формы в телеграм
В новой записи я вам расскажу как создать форму обратной связи с отправкой письма в телеграмм. Для отправки письма мы будем использовать стандартные методы API от Telegram. Подробную информацию о методах вы можете посмотреть в официальной документации Telegram
3) Отправить сообщение боту — /newbot
4) После отправки запроса , нужно указать имя бота (на английском языке)
5) После этого дублировать название бота, но только суффиксом _bot
7) Теперь нам нужно создать чат в который мы добавим нашего бота
8) Далее нам нужно получить id нашего бота. Для этого нужно перейти по следующей ссылке, где за место символов X нужно подставить ваш токен:
https://api.telegram.org/botXXXXXXXXXXXXXXXXXX/getUpdates
Не закрывайте эту страницу, после 9 пункта, её нужно будет обновить.
9) Теперь вам необходимо отправить команду /join в чат для активации бота. После отправки команды, вам нужно обновить страницу, чтобы сделать повторный запрос.
Здесь вам нужно записать следующий фрагмент кода — id вашего бота. Эту информацию тоже нужно записать.
Вам нужен id со знаком минус.
«my_chat_member»:-594377170, .
Теперь вам нужно создать форму обратной связи и отправить полученные данные по следующему URL:
чата> $phone = $_POST[‘phone’]; $email = $_POST[’email’]; /*функция для создания запроса на сервер Telegram */ function parser($url) < $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); if($result == false)< echo «Ошибка отправки запроса: » . curl_error($curl); return false; >else < return true; >> /*собираем сообщение*/ $message .= «Новое сообщение из формы»; $message .= «Имя: «.$name; $message .= «Телефон:».$phone; $message .= «Email:».$email; /*токен который выдаётся при регистрации бота */ $token = «1724061264:AAHTshrcn33459712fdsf2zM-bDviT-QgF0tAM»; /*идентификатор группы*/ $chat_id = «-594377134470»; /*делаем запрос и отправляем сообщение*/ parser(«https://api.telegram.org/bot/sendMessage?chat_id=text=»);
Новый вариант кода
/* ОТПРАВКА ПИСЬМА ЗАКАЗА В TELEGRAM */ /*функция для создания запроса на сервер Telegram */ function parser($url) < $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); if($result == false)< echo «Ошибка отправки запроса: » . curl_error($curl); return false; >else < return true; >> function orderSendTelegram($message) < /*токен который выдаётся при регистрации бота */ $token = «1616052093:AAGZ5vsK12RTT92jj2yHaZ4tZIUB_8N-tY»; /*идентификатор группы*/ $chat_id = «-435154116»; /*делаем запрос*/ parser(«https://api.telegram.org/bot/sendMessage?chat_id=text=»); >
На этом всё!
Больше интересных статей в нашей группе — https://vk.com/progtime
Вы так же можете разместить свой вопрос на нашем форуме, где другие программисты смогут вам помочь в решение вашей задачи — https://vk.com/prog_time
Так же прокачивайте свои навыки на нашем канале — https://www.youtube.com/c/ProgTime
Наши планы
- Написание материала для курса по разработке ботов на Telegram
- Разработка универсального парсера на PHP
Поддержите мой сайт!
Каждый переведённый донат, мотивирует на создание новых записей и уроков на YouTube
Источник: prog-time.ru