Как безопасно хранить токен Телеграм бота

Как сохранить присланный боту медиа-файл? Рассмотрим на примере картинки, но принцип для остальных форматов одинаковый. Скачаем картинку на наш сервер.

В своей работе над ботом, который проводит розыгрыши, мне потребовалось сохранять у себя на сервере файлы, присылаемые пользователями. Очень интересный и простой процесс получился. У Telegram Bot Api для этого есть специальный метод getFile. На входе он получает file_id , на выходе объект File. Параметров file_id у картинки может быть больше одного, потому как телеграм присылает несколько вариантов размеров картинки, последний всегда оригинал. При загрузке картинки в бот приходит информация в виде объекта Photo, в котором лежит массив объектов PhotoSize. Наш бот будет принимать только команду /start и картинку, на остальные запросы он будет «ругаться». Чтобы определить, что нам пришло в нашем уже знакомом по предыдущим статьям методе init() будем проверять ключи массива пришедших данных. Для реализации задуманного нам нужен только объект Message.

Как хранить токены, API ключи и секретную информацию в env переменных, на примере python приложений


sendMessage($chat_id, «Приветствую! Загрузите картинку.»); > elseif (array_key_exists(‘photo’, $data[‘message’])) < // если пришла картинка то сохраняем ее у себя $text = $this->getPhoto($data[‘message’][‘photo’]) ? «Спасибо! Можете еще загрузить мне понравилось их сохранять.» : «Что-то пошло не так, попробуйте еще раз»; // отправляем сообщение о результате $this->sendMessage($chat_id, $text); > else < // если пришло что-то другое $this->sendMessage($chat_id, «Не понимаю команду! Просто загрузите картинку.»); > > ?>

Картинки мы будем сохранять в директории img , располагается она рядом с файлом index.php в котором наш код.

Еще по теме:  Как задеанонить человека в Телеграмме без номера

. .. [ img ] index.php
через метод getPhotoPath() получаем расположение файла на сервере Telegram
через метод copyPhoto() копируем картинку к себе на сервер

Картинка располагается на сервере Telegram по стандартному пути:

https://api.telegram.org/file/bot/

Выводит картинку по этому пути где-либо в сети не рекомендую, так как будет доступен ваш токен от бота.

Сохранять себе на сервер мы будем оригинал, поэтому нам надо узнать количество элементов в массиве, использовать будем функцию count().

Чтобы получить расширение файла, будем разбивать file_path в массив по знаку . функцией explode() и брать последний элемент используя функцию end(). Для копирования файлов пользуемся функцией copy().

getPhotoPath($file_id); // возвращаем результат загрузки фото return $this->copyPhoto($file_path); > // функция получения метонахождения файла private function getPhotoPath($file_id) < // получаем объект File $array = json_decode($this->requestToTelegram([‘file_id’ => $file_id], «getFile»), TRUE); // возвращаем file_path return $array[‘result’][‘file_path’]; > // копируем фото к себе private function copyPhoto($file_path) < // ссылка на файл в телеграме $file_from_tgrm = «https://api.telegram.org/file/bot».$this->botToken.»/».$file_path; // достаем расширение файла $ext = end(explode(«.», $file_path)); // назначаем свое имя здесь время_в_секундах.расширение_файла $name_our_new_file = time().».».$ext; return copy($file_from_tgrm, «img/».$name_our_new_file); > ?>

Подводим итог

Сохранить картинку через Телеграм бот очень просто. Методы Bot API позволяют это сделать быстро. Для сохранения других типов файлов с Телеграм алгоритм аналогичный. Скачать исходный код можно по этой ссылке.

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

Создаем собственный текстовый квест в Telegram

Телеграм боты — это крутой способ взаимодействия с пользователем прямо в привычном ему мессенджере. Это гораздо быстрее и чаще удобнее, чем писать полноценное мобильное приложение. В этой статье мы постраемся создать собственного Telegram бота, который будет предлагать пользователю разыграть полноценный текстовый квест.

Нюансы сюжета вам придется продумать самостоятельно, ну а вся техническая часть — под катом!

Еще по теме:  This invite link has expired Телеграмм что делать

Для начала давайте познакомимся с Telegram ботами, по ссылке представлено множество примеров таких программ, от прогноза погоды до общения с рандомным собеседником: https://uip.me/2016/04/50-popular-telegram-bots/.

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

После получения токена нам потребуется установить библиотеку pyTelegramBotApi, как и обычно, это делается через pip:

pip install pytelegrambotapi

Пробуем создать бота

Давайте сделаем нашего первого бота — бота-попугая. На все сообщения он будет отвечать повторением.

Помимо текстовых сообщений, в телеграме есть команды, они начинаются со слэша, например, /start или /help . Их тоже можно обрабатывать.

Давайте добавим пояснение к нашему боту, которое объяснит пользователю, что он делает.

Взаимодействуем с несколькими пользователями одновременно

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

Если мы будем использовать переменную, то сможем сохранить сообщение только одного пользователя. Например, Вася попросил запомнить слово kitten . Мы положим эту строку в переменную note . А затем Петя, попросить запомнить слово puppy , и мы снова положим это переменную note . Когда Вася попросит нам напомнить его последнее сообщение, мы напишем ему puppy вместо kitten . Совершенно не годится!

> Удобнее всего хранить все данные, которые привязаны к конкретному пользователю в словаре. Ключем в этом словаре будет id пользователя, а значением — произвольные данные.

Предположим, что наш словарь называется notes — заметки. Теперь, когда Вася (id88000) пришлет слово kitten мы положим его в notes[88000] , а слово puppy от Пети (id5300) — в notes[5300] . Посколько теперь мы используем разные переменные для хранения слова, сообщения от разных пользователей не будут путаться.

Еще по теме:  Как на Ватсап бизнес вставить ссылку Телеграмм на веб сайт

Реализация:

Добавляем кнопки

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

Собираем текстовый квест

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

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