Бот приветствует по имени Телеграмм

Всем привет. Давно ничего не писал, так как не было никаких идей, но недавно, 31 мая 2019 года, Telegram выпустил новое обновление, в котором добавил новый тип данных — LoginUrl. Итак, попробую объяснить идею

Возможно, вы найдёте другой бесплатный хостинг с поддержкой SSL, который бы функционировал круглосуточно и без ограничений, или создадите свой самоподписанный сертификат, но для разработки и отладки бота Cloud9 является наиболее удобной средой. Далее речь пойдёт о коде на PHP, но после регистрации на сайте Cloud9 вы можете выбрать для работы и другие языки.

Итак, регистрируемся, выбираем имя проекта (для порядка сделаем одинаковым с именем бота), можем выбрать приватность (в бесплатном случае для приватности доступен только один из ваших проектов). Далее можем указать Git или адрес живого сайта для клонирования, а можем оставить это поле пустым, и тогда среда создаст шаблонный проект сайта. Затем выбираем шаблон среды, в котором будет крутиться наш бот (я выбрал «PHP, Apache and MySQL preconfigured») и нажимаем кнопку «Create workspace».

Авто приветствие в Telegram чат группе

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

  1. /**
    * URL-адрес бота и его маркер.
    */
  2. $access_token = ‘ВАШ_МАРКЕР’ ;
  3. $api = ‘https://api.telegram.org/bot’ . $access_token ;
  4. /**
    * Зададим основные переменные.
    */
  5. $output = json_decode(file_get_contents( ‘php://input’ ), TRUE); // Получим то, что передано скрипту бото м в POST-сообщении и распарсим
  6. $chat_id = $output [ ‘message’ ][ ‘chat’ ][ ‘id’ ]; // Выделим идентификатор чата
  7. $first_name = $output [ ‘message’ ][ ‘chat’ ][ ‘first_name’ ]; // Выделим имя собеседника
  8. $message = $output [ ‘message’ ][ ‘text’ ]; // Выделим сообщение собеседника
  9. /**
    * Получим команды от пользователя.
    * Переведём их для удобства в нижний рег истр
    */
  10. switch (strtolower_ru( $message )) <
  11. case ( ‘привет’ ):
  12. case ( ‘/hello’ ):
  13. sendMessage( $chat_id , ‘Привет, ‘ . $first_name . ‘! ‘ . $emoji [ ‘preload’ ] );
  14. break ;
  15. case ( ‘/start’ ):
  16. break ;
  17. default :
  18. sendMessage( $chat_id , ‘Неизвестная команда!’ );
  19. break ;
  20. >
  21. /**
    * Функция отправки сообщения в чат sendM essage().
    */
  22. function sendMessage( $chat_id , $message ) <
  23. file_get_contents( $GLOBALS [ ‘api’ ] . ‘/sendMessage?chat_id=’ . $chat_id . ‘
  24. >
  25. /**
    * Функция перевода символов в нижний рег истр, учитывающая кириллицу
    */
  26. function strtolower_ru( $text ) <
  27. $alfavitlover = array ( ‘ё’ , ‘й’ , ‘ц’ , ‘у’ , ‘к’ , ‘е’ , ‘н’ , ‘г’ , ‘ш’ , ‘щ’ , ‘з’ , ‘х’ , ‘ъ’ , ‘ф’ , ‘ы’ , ‘в’ , ‘а’ , ‘п’ , ‘р’ , ‘о’ , ‘л’ , ‘д’ , ‘ж’ , ‘э’ , ‘я’ , ‘ч’ , ‘с’ , ‘м’ , ‘и’ , ‘т’ , ‘ь’ , ‘б’ , ‘ю’ );
  28. $alfavitupper = array ( ‘Ё’ , ‘Й’ , ‘Ц’ , ‘У’ , ‘К’ , ‘Е’ , ‘Н’ , ‘Г’ , ‘Ш’ , ‘Щ’ , ‘З’ , ‘Х’ , ‘Ъ’ , ‘Ф’ , ‘Ы’ , ‘В’ , ‘А’ , ‘П’ , ‘Р’ , ‘О’ , ‘Л’ , ‘Д’ , ‘Ж’ , ‘Э’ , ‘Я’ , ‘Ч’ , ‘С’ , ‘М’ , ‘И’ , ‘Т’ , ‘Ь’ , ‘Б’ , ‘Ю’ );
  29. return str_replace( $alfavitupper , $alfavitlover ,strtolower( $text ));
  30. >
Еще по теме:  Keep it up Телеграм чит

Подробно рассматривать работу кода я не буду — он прост и сопровождён комментариями. Для завершения написания кода вам надо будет просто вставить присланный ранее ботом BotFather маркер (token) вместо текста «ВАШ_МАРКЕР». Он будет участвовать в формировании адреса, по которому этот код будет находить вашего бота.

Нажимаем кнопку Run Project. Сайт становится видим в сети и его код готов быть вызванным из бота.

Привязка бота к коду

Чтобы бот вызывал написанный нами внешний код, нам надо сообщить ему адрес нашего php-файла. Для этого копируем в строку браузера следующую ссылку:

Текст ВАШ_МАРКЕР заменяем присланным ранее маркером, а текст URL_PHP_ ФАЙЛА заменяем на полный URL php-файла с нашим кодом. Имя сайта берём из строки, появившейся снизу на вкладке Apache https://novikovmaxim.livejournal.com/421130.html» target=»_blank»]novikovmaxim.livejournal.com[/mask_link]

Простейший голосовой помощник. Часть 2. Внедрение в telegram

По статье PYTHON: ПРОСТЕЙШИЙ ГОЛОСОВОЙ ПОМОЩНИК нам несколько раз писали в личные сообщение вопросы про возможность интеграции “голосового помощника” в telegram. Мы изначально не планировали этого делать, но потом задали себе вопрос – почему бы не попробовать?

Используемые библиотеки

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

  • telebot (pyTelegramBotAPI) – по словам автора библиотеки, простая, но расширяемая реализация на Python для Telegram Bot API.
  • requests – библиотека для обработки HTTP запросов.
  • random – библиотека для, как не странно, рандома.
  • speech_recognition – используем туже распозновалку голоса, что и в прошлой статье.
  • pyttsx3 – если раньше мы использовали консольный аналог say, то теперь нам нужно отправлять на сервера telegram голосовые файлы в формате oga
  • os – нам нужна для работы с файловой системой.
  • time – нужно только в одном моменте для sleep.
Еще по теме:  Что такое автоудаление в Телеграм канале

import telebot import requests import random import speech_recognition as sr import os import pyttsx3 import time

Сразу отмечу, что тут указаны не все, но мы постараемся ничего не пропустить по ходу статьи

Получение токена и создание оболочки бота

Одной из важных вещей, которым делится с нами Крестный отец – токен нашего бота. Его мы и указываем в коде. В статье токен изменен для соблюдения анонимности

token = ‘fa3hnerpw25mga095mt125aga1si2lr!fk39sktndsawg’ bot = telebot.TeleBot(token)

Про ffmpeg

Так как в telegram использует в голосовых сообщениях файлы формата oga- (да не простой oga, а opus’овский), но мы можем обрабатывать библиотекой speech_recognition файлы формата wav, то на помощь придет к нам библиотека pydub, которой для работы нужно FFmpeg.

FFmpeg – это кроссплатформенное решение для записи, конвертации и записи аудио и видео. В нашем случае необходима для конвертации oga в wav и обратно. Для удобства FFpeg мы распаковали архив в директорию кода (ffmpeg был взят на сайте gyan.dev в разделе release). Про установку FFmpeg следует отметить, что корректно работать будет только после перезагрузки сервера или пк – это избавит нас от ошибки winerror 2.

В коде указываем для pydub расположение ffmpeg.

from pydub import AudioSegment AudioSegment.converter = os.getcwd() + «\ffmpeg\bin\ffmpeg.exe» AudioSegment.ffmpeg = os.getcwd() + «\ffmpeg\bin\ffmpeg.exe» AudioSegment.ffprobe = os.getcwd() + «\ffmpeg\bin\ffprobe.exe»

Инициализация голосового движка

Для формирования text-to-speech файлов нам понадобится pyttsx3. Особенностью pyttsx3 является возможность работы оффлайн, нам это навряд ли это пригодится, но отметить стоит. А также мы не забываем выбрать “голос” нашего бота.

import pyttsx3 text_to_speach = pyttsx3.init() voices = text_to_speach.getProperty(‘voices’) for voice in voices: print(‘———————‘) print(‘Имя: %s’ % voice.name) print(‘ID: %s’ % voice.id)
——————— Имя: Microsoft Irina Desktop — Russian ID: HKEY_LOCAL_MACHINESOFTWAREMicrosoftSpeechVoicesTokensTTS_MS_RU-RU_IRINA_11.0 ——————— Имя: Microsoft Zira Desktop — English (United States) ID: HKEY_LOCAL_MACHINESOFTWAREMicrosoftSpeechVoicesTokensTTS_MS_EN-US_ZIRA_11.0 ——————— Имя: Microsoft David Desktop — English (United States) ID: HKEY_LOCAL_MACHINESOFTWAREMicrosoftSpeechVoicesTokensTTS_MS_EN-US_DAVID_11.0

Еще по теме:  Мистер пилот Телеграмм кто это такой

Не густо. Выбираем из доступных русскоговорящих голосов (или устанавливаем дополнительно в случае отсутствия или вкусовых предпочтений), в нашем примере имеется только IRINA, классический женский роботизированный голос. IRINA, I choose you.

RU_VOICE_ID = «HKEY_LOCAL_MACHINESOFTWAREMicrosoftSpeechVoicesTokensTTS_MS_RU-RU_IRINA_11.0» text_to_speach.setProperty(‘voice’, RU_VOICE_ID)

Начало (/start)

Наконец, мы добрались до самого бота. На команду /start бот напишет нам небольшое приветствие.

Подсказки (/help)

Наш новый бот будет иметь практически тоже самое, что его первая версия, но для понятия какой функционал имеется, воспользуемся командой /help.

Обработка контента

В Telegram используется достаточно большое количество типов контента: видео, аудио, голосовые сообщения, стикеры и т.д. И для каждого события отправки пользователем определённого типа сообщения мы можем задать различную обработку. В нашей сатье мы воспользуемся только text и voice. Начнем с text.

Обработка текстовых сообщений

Тип контента text – это отправленные пользователем текстовые сообщения. Наша версия первого бота с некоторыми улучшениями приведена ниже.

Обработка голосовых сообщений

С обработкой голосовых сообщений все несколько сложнее. Как мы упоминали ранее, telegram хранит голосовые сообщения в формате oga. Нам нужно их обработать в wav для обработки speech-to-text (можно этого и не делать – имеется отличный аналог от Яндекса с обработкой oga, но руки до него так и не дошли).

Текущие результаты

А вот так звучит наша Irina (Пример_1.mp3, Пример_2.mp3)

Планы развития

  • Развертывание на облачных серверах
  • Решить проблему с отправкой oga в telegram – не везде могут открываться отправленные потом голосовые сообщения
  • Внедрение “напоминалок” для пользователей бота
  • Изменение интерфейса на более юзерфрендли
  • Внедрение логирования событий сразу в бд
  • Отработка исключений, возникающих при нестандартных действиях пользователя
  • Перевод части существующего функционала в отдельные подфункции

Заключение

Вот мы и закончили с первой попыткой внедрения бота в telegram. Что-то получилось хорошо, что-то не очень. Не бойтесь комментировать и задавать вопросы – только так будет развиваться профсообщество и все мы вместе с ним!

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

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