Лог файла чат бота Телеграмм

В этой серии заметок хотел бы немного коснуться данной темы. Серия будет включаться в себя три раздела:

  1. Разработка бота на Go для поиска заклинаний для Dungeon And Dragons
  2. Публикация бота на платформе heroku
  3. Добавление аналитики использования бота

Итак, начнём!

Во-первых, нам потребуется сам список заклинаний DnD. Найти его можете в моём bitbucket-репозитории этого бота.

Во-вторых, создать новую папку. Например, dndspellsbot.

В-четвертых, чтобы не изобретать велосипед, добавить библиотеку telegram-bot-api:

go get gopkg.in/telegram-bot-api.v4

И, наконец-то, в-пятых, написать код самого бота.

config.json

Создадим пустой Go-файл dndspellsbot.go в папке dndspellsbot. Туда же добавим конфигурационный файл config.json со следующим содержимым:

Конечно же, можно обойтись без этих усложнений и зашить токен прямо в коде бота, но в случае, если вы случайно зальетё код вашего бота в какой-то публичный репозиторий на github/bitbucket/whatever, то утечёт и токен, а это, согласитесь, неприятно. И это только сейчас у нас такой простой конфиг — в дальнейшем будут добавляться новые свойства и всё будет храниться в одном месте. Удобно, согласитесь?

Telegram Bot на Python | История (лог) переписки с ботом в файле Excel | Бот от моего подписчика

Получить этот токен из конфигурационного файла довольно просто стандартными средствами Go:

package main import ( «fmt» «gopkg.in/telegram-bot-api.v4» «log» «os» «encoding/json» ) type Config struct < TelegramBotToken string >func main() < file, _ := os.Open(«config.json») decoder := json.NewDecoder(file) configuration := Config<>err := decoder.Decode( log.Panic(err) >fmt.Println(configuration.TelegramBotToken) >

Теперь при добавлении в config.json новых свойств и модификации структуры Config можно получать необходимые параметры конфигурации.

ping?

В репозитории telegram-bot-api есть пример echo-бота — бота, который отвечает вам те же сообщением. Возьмём его за основу:

bot, err := tgbotapi.NewBotAPI(configuration.TelegramBotToken) if err != nil < log.Panic(err) >bot.Debug = false log.Printf(«Authorized on account %s», bot.Self.UserName) u := tgbotapi.NewUpdate(0) u.Timeout = 60 updates, err := bot.GetUpdatesChan(u) if err != nil < log.Panic(err) >// В канал updates будут приходить все новые сообщения. for update := range updates < // Создав структуру — можно её отправить обратно боту msg := tgbotapi.NewMessage(update.Message.Chat.ID, update.Message.Text) msg.ReplyToMessageID = update.Message.MessageID bot.Send(msg) >

Вы уже добавила вашего бота в свой список контактов? Если нет — сейчас самое время.

Теперь самое интересное — запускаем наше приложение командой go run dndspellsbot.go и пишем что-нибудь нашему боту. Если всё сделано правильно, то бот ответит вам вашим же сообщением:

2016-10-03_21-46-08.png

ТЕЛЕГРАММ БОТ НА PYTHON ЗА 8 МИНУТ | Отправка файлов, обработка нажатия на кнопки клавиатуры

Однако, мы хотели не этого.

Опустим подробности парсинга XML — пост не об этом (полный код можно будет найти по ссылке в конце статьи).

Будем считать, что у нас есть слайс всех заклинаний и любой запрос пользователя к боту — это запрос на поиск подходящего заклинания по его имени (усложнять можно бесконечно, но на данный момент этого достаточно):

. query := update.Message.Text // Получим те заклинания, в имени которых есть искомое слово или фраза filteredSpells := Filter(spells.Spells, func(spell Spell) bool < return strings.Index(strings.ToLower(spell.Name), strings.ToLower(query)) >= 0 >) // Если не нашлось ни одного заклинания — скажем об этом пользователю if len(filteredSpells) == 0 < msg := tgbotapi.NewMessage(update.Message.Chat.ID, «No one spells matches») bot.Send(msg) >// Каждое заклинание отправляем отдельным сообщением for _, spell := range(filteredSpells) < text := «» for _, t := range(spell.Texts) < text = text + t + «n» >msg := tgbotapi.NewMessage(update.Message.Chat.ID, fmt.Sprintf(«%sn%s», spell.Name, text)) bot.Send(msg) > . // Функция фильтрации слайсов func Filter(spells []Spell, fn func(spell Spell) bool) []Spell < var filtered []Spell for _, spell := range(spells) < if fn(spell) < filtered = append(filtered, spell) >> return filtered >

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

Теперь, при любом запросе от пользователя, бот будет возвращать все подходящие заклинания из phb.xml .

В следующей статье немного улучшим нашего бота: добавим форматирование сообщений, inline-режим и добавим пару команд.

Код бота можно найти на bitbucket.

Источник: ashirobokov.wordpress.com

Telegram API Bot

Развитие Телеграмм во многом определяется наличием большого числа ботов – небольших сервисных программ-роботов. Их может создать каждый пользователь, знакомый с программированием на среднем уровне. Telegram API Bot – это программный интерфейс, позволяющий программировать собственного бота.

API включает в себя объекты и команды, предназначенные для установки поведения бота Telegram. Используя интерфейс, вы можете создавать собственные программные коды, которые при запуске в Telegram начинают работать как боты.

Элементы управления

В Бот Телеграмм API все элементы управления представляют собой объекты, которые представлены в JSON, то есть в виде строки, заданной по определенным правилам. Это позволяет производить обмен данными по сети максимально быстро и наименее затратно, так как передается не программный код, а набор пар «ключ:значение» в текстовом виде. В таблице приведены все типы API. Большая часть объектов предназначена для создания команд бота. Ключи дадут более расширенное представление о возможностях объекта.

Название Описание Ключи
User Пользователь в Телеграмм id
first_name
last_name
username
Chat Чат id
type
title
username
first_name
last_name
all_members_are_administrators
Message Сообщение message_id
from
date
chat
forward_from
forward_date
reply_to_message
text
entities
audio
document
photo
sticker
video
voice
caption
contact
location
venue
new_chat_member
left_chat_member
new_chat_title
new_chat_photo
delete_chat_photo
group_chat_created
supergroup_chat_created
channel_chat_created
migrate_to_chat_id
migrate_from_chat_id
pinned_message
MessageEntity Отдельная сущность в текстовом сообщении (хештег, ссылка и пр.) type
length
url
offset
PhotoSize Изображение заданного размера или превью фото, файла или стикера file_id
width
height
file_size
Audio Аудиозапись file_id
duration
performer
title
mime_type
file_size
Document Любой файл, не являющийся изображением, аудиозаписью или голосовой записью file_id
thumb
file_name
mime_type
file_size
Sticker Стикер file_id
width
height
thumb
file_size
Video Видеозапись file_id
width
height
duration
thumb
mime_type
file_size
Voice Голосовое сообщение file_id
duration
mime_type
file_size
Contact Телефонный контакт phone_number
first_name
last_name
user_id
Location Точка на карте longitude
latitude
Venue Объект на карте location
title
address
foursquare_id
UserProfilePhotos Фото профиля пользователя total_count
photos
File Готовый к загрузке файл file_id
file_size
file_path
ReplyKeyboardMarkup Клавиатура с возможностью ответа keyboard
resize_keyboard
one_time_keyboard
selective
KeyboardButton Кнопка клавиатуры для ответа text
request_contact
request_location
ReplyKeyboardHide Заменяет клавиатуру бота на стандартную клавиатуру Telegram hide_keyboard
selective
InlineKeyboardMarkup Встроенная клавиатура, появляющаяся под сообщением inline_keyboard
InlineKeyboardButton Одна кнопка на встроенной клавиатуре text
url
callback_data
switch_inline_query
switch_inline_query_current_chat
callback_game
CallbackQuery Входящий запрос обратной связи для встроенной кнопки с заданным параметром callback_data id
from
message
inline_message_id
data
ForceReply Эмулирует действия пользователя: выбор сообщения и нажатия кнопки «Ответить» force_reply
selective
ResponseParameters Сообщает, почему запрос не выполнился успешно migrate_to_chat_id
retry_after

Результирующие строки, которые присылает мессенджер, представлены в виде тех же объектов API.

Обмен сообщениями происходит в виде запросов. В следующей таблице приведены примеры некоторых из них.

Метод Действие
getMe Позволяет получить информацию о пользователе
sendMessage Отправляет сообщение
sendPhoto Отправляет фото
sendAudio Отправляет аудио
sendDocument Отправляет документ
sendVideo Отправляет видео
sendContact Отправляет контакт
getUpdates Получает обновления из чата
Еще по теме:  Запись экрана без звука в Телеграмм на Айпаде

Все методы (а их достаточно много) делятся на группы:

  1. Получение обновлений и информации.
  2. Работа в чате.
  3. Отправка различных элементов.
  4. Работа со стикерами.
  5. Обновление сообщений.
  6. Режим inline.
  7. Платежный функционал.
  8. Для игр.

Полной документации Telegram Bot API на русском пока не существует. Однако стандартный перевод в браузере Google Chrome прекрасно справляется с задачей.

Языки программирования

Telegram API поддерживается множеством языков программирования. Это дает возможность выбора создателю.

Любители JavaScript могут использовать Node.js Telegram Bot API. Здесь необходимо знание не только языка, но и умение обращаться с этим фреймворком, превратившим клиентский язык в полноценный серверный интерфейс.

Одним из самых популярных для написания ботов с использованием Telegram Bot API является PHP. Этот язык изначально был предназначен для создания серверных web-приложений. Он отличается простотой, логичностью и специализированностью именно для web-среды.

Часто используется Telegram Bot API в Python. Этот язык отличается минимализмом и достаточно прост в изучении. Он очень популярен за счет своей производительности.
Классикой является применение Telegram Bot API в С++. Язык нельзя назвать простым, но он является базой, на которой были созданы все остальные вышеперечисленные ЯП. Соответственно в нем не заложена определенная специализация. Инструменты позволяют создавать любые приложения.

Пример использования

Кроме объектов API имеет набор методов, которые позволяют отправлять сообщения, файл, фото стикеры, редактировать и многое другое. Все эти команды можно найти в описании API на официальном сайте.

Все запросы имеют вид:

https://api.telegram.org/bot/КОМАНДА

Всего существует 4 способа подачи запроса:

  1. Запрос в URL
  2. application/x-www-form-urlencoded
  3. application/json (не подходит для загрузки файлов)
  4. multipart/form-data (для загрузки файлов)

Доступны как GET, так и POST запросы.

Самый простой способ попробовать команды API – адресная строка в браузере. Зайдите в свой бот в web-версии или с мобильного устройства. Затем в браузере наберите команду:

В результате в окне появится JSON-строка

В браузере появится строка

А в чате Телеграмм вы увидите приветствие от созданного робота.

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

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

Как создать простого бота для Телеграм на PHP

Создадим простого бота для мессенджера Telegram с использованием PHP. Данная статья создана исключительно в поучительных целях и не претендует на полноту или правильность подхода. Весь код бота очень простой и может быть освоен начинающими PHP-разработчиками.

Предупреждаю сразу профессионалов и перфекционистов от программирования — вам здесь делать нечего . Никаких фреймворков и гитхабов! Все будет очень просто и примитивно, но работать будет. И это главное. Всем счастья

Шаг 1: подготовка

Что нам понадобится:

  1. Веб-сервер с работающим PHP 5.6 и выше — не локальный веб-сервер, а веб-сервер на хостинге, что важно! Так как сервисы Telegram должны будут видеть вашего бота по внешней URL-ссылке;
  2. Веб-сервер должен работать через https — то есть на веб-сервере должен быть установлен давно (больше суток назад) зарегистрированный SSL-сертификат. Достаточно будет бесплатного Let’s Encrypt SSL-сертификата;
  3. Доступ к файлам на этом сервере, конечно же — иначе как мы что-то сделаем;
  4. Установленная кодовая страница UTF-8 на сервере по-умолчанию или добавьте в файл .htacces в корне сайта строку AddDefaultCharset utf-8;
  5. Аккаунт в мессенджере Telegram;

Шаг 2. Регистрация вашего бота в Телеграм

Да, да. Бот еще даже не создан, но перед этим его уже нужно зарегистрировать, чтобы получить уникальный идентификатор, чтобы в дальнейшем обращаться к BOT API Telegram.

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

Шаг 3. Создаем код бота

Будем делать прямо в корне сервера (не самый верный подход, можно создать папку bot, а в ней уже файл verysimple_bot.php). Для этого на сервере создадим файл verysimple_bot.php в котором и будет весь код бота. Не забываем, что весь код в файле verysimple_bot.php должен быть в кодировке UTF-8.

Для редактирования файлов кода и заброске их на сервер удобно использовать FAR Manager — в нем есть и подсветка синтаксиса и FTP/SFTP клиент для копирования файла на сервер.

Делаем заготовку бота, который сможет выдавать список команд и информацию о нас:

Шаг 4. Делаем WebHook и конкретизируем код бота

    Чтобы все заработало, нужно сособщить сервису Телеграм, что наш бот лежит там-то — используй его код для такого-то бота verysimple_bot.
    Для этого нужно сформировать ссылку, которая называется WebHook и её мы и сообщим телеграму:

https://api.telegram.org/bot 1234567899:AAKJhkkjhkjhKhKhjkhkhk_kJhgkjhJhgjghjhG /setWebhook?url= https://www.mysite.ru/verysimple_bot.php

Не забываем где красное заменяем на свои данные!
Как сформируете эту ссылку — вставьте её в браузер и запустите!

  1. Пользователь в диалоге с ботом пишет запрос, например /help
  2. Telegram Bot API через WebHook, что мы установили, берет этот запрос и отправляет в код бота
  3. Мы в боте получаем его, анализируем, видим например, /help и через Telegram Bot API и
    функцию message_to_telegram отправляем ответ — который появлется в диалоге как ответ бота.

Шаг 5. Добавим возможность делать заявки через бота

Заявкой будем считать сообщение или вопрос, которое можно будет отправить через нашего бота какому-то пользователю, назовем его менеджер компании. То есть нам нужно организовать такую цепочку:

  1. Пользователь запрашивает у бота «Оставить заявку», например набрав команду /order
  2. Бот входит в режим ожидания текста Заявки
  3. Если пользователь ввел текст и нажал Enter, только тогда отослать это сообщение заранее запрограммированному по менеджеру компании.

Получим идентификатор chat_id пользователя кому нужно отсылать заявки:

  1. Помните наш файл message.txt — вот он сейчас понадобится
  2. Присоединяемся к нашему боту тем пользователем, кому будем слать заявки (менеджер компании)
  3. Сразу открываем файл message.txt и смотрим блок: [chat]

$order_chat_id = ‘123456789’; //chat_id менеджера компании для заявок $bot_state = »; // состояние бота, по-умолчанию пустое

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

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

Напишем две функции: set_bot_state($chat_id, $data) и get_bot_state($chat_id) — которые сохраняют текущее состояние бота и получают соответсвенно, для нужного пользователя. Сохранять будем в подпапке /users на сервере, которую создадим предварительно не забыв дать права на запись. Состояния будут хранится все в тех же текстовых файлах с именами chat_id пользователей и содержать последнюю команду:

// сохранить состояние бота для пользователя function set_bot_state ($chat_id, $data) < file_put_contents(__DIR__ . ‘/users/’.$chat_id.’.txt’, $data); >// получить текущее состояние бота для пользователя function get_bot_state ($chat_id) < if (file_exists(__DIR__ . ‘/users/’.$chat_id.’.txt’)) < $data = file_get_contents(__DIR__ . ‘/users/’.$chat_id.’.txt’); return $data; >else < return »; >>

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

Шаг 6. Регистрация команд бота

Вот и все — простой бот работает! Всем спасибо, если дочитали и что-то заработало.

Николай Комарков

Источник: www.novelsite.ru

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