Добавить аудиофайлы в бд Telegram bot

В новом уроке мы с вами поговорим о настройке хуков и напишем свой первый обработчик команд.

В первом уроке я вам рассказывал что такое хуки, давайте повторим:

Hooks (Хуки) — это способ общения с программой, по средствам отправки данных от сервера — клиенту. То есть при определённых изменениях в программе, сервер (приложение) будет отправлять данные на указанный URL скрипта клиента.

Например. Каждый раз когда пользователи будут писать сообщения боту, данные о сообщениях будут отправляться на указанный скрипт, где вы сможете записать сообщения в БД или отправить ответ.

Для регистрации хука нужно выполнить 2 правила:

  • разместить скрипт на виртуальный сервер (хостинг)
  • домен на который будут отправляться запросы, должен иметь SSL сертификат и работать через HTTPS соединение

Если ваш хостинг соответствует данным требованиям, то давайте займёмся регистрацией хука для Telegram бота.

Пишем TELEGRAM бота с БАЗОЙ ДАННЫХ на Python

Теперь выведем полученную информацию на страницу

echo file_get_contents(__DIR__.»/message.txt»);

Вот что мы получаем. Это объект в котором записана информация о созданном сообщение, мы видим данные о пользователе, данные о чате, дата отправления и текст сообщения.

< «update_id»: 803290892, «message»: < «message_id»: 41, «from»: < «id»: 1424646511, «is_bot»: false, «first_name»: «Илья», «last_name»: «Лящук», «username»: «iliyalyachuk», «language_code»: «ru» >, «chat»: < «id»: 1424646511, «first_name»: «Илья», «last_name»: «Лящук», «username»: «iliyalyachuk», «type»: «private» >, «date»: 1659098034, «text»: «Новое тестовое сообщение» > >

Данные при нажатие на кнопку в чате

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

Отличительной особенностью таких запросов является то что главный ключ message заменяется на callback_query, а сам массив message будет находиться внутри.

Получить код кнопки на которую было произведено нажатие, можно из callback_query -> data.

< «update_id»: 803290921, «callback_query»: < «id»: «6118810175780540321», «from»: < «id»: 1424646511, «is_bot»: false, «first_name»: «Илья», «last_name»: «Лящук», «username»: «iliyalyachuk», «language_code»: «ru» >, «message»: < «message_id»: 113, «from»: < «id»: 5340791844, «is_bot»: true, «first_name»: «test_prog_time», «username»: «test_prog_time_bot» >, «chat»: < «id»: 1424646511, «first_name»: «Илья», «last_name»: «Лящук», «username»: «iliyalyachuk», «type»: «private» >, «date»: 1659335238, «text»: «Тестовое сообщение», «reply_markup»: < «inline_keyboard»: [ [ < «text»: «YOUR BUTTON LABEL TEXT», «callback_data»: «test_123» >] ] > >, «chat_instance»: «4661722712167232747», «data»: «test_123» > >

Данные при отправке изображения

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

< «update_id»: 803290893, «message»: < «message_id»: 42, «from»: < «id»: 1424646511, «is_bot»: false, «first_name»: «Илья», «last_name»: «Лящук», «username»: «iliyalyachuk», «language_code»: «ru» >, «chat»: < «id»: 1424646511, «first_name»: «Илья», «last_name»: «Лящук», «username»: «iliyalyachuk», «type»: «private» >, «date»: 1659099213, «photo»: [ < «file_id»: «AgACAgIAAxkBAAMqYuPYTHnTFqNQZ3DB5B-f_MovPOMAArm9MRud5CFLxgi3BP6dpsoBAAMCAANzAAMpBA», «file_unique_id»: «AQADub0xG53kIUt4», «file_size»: 1863, «width»: 90, «height»: 90 >, < «file_id»: «AgACAgIAAxkBAAMqYuPYTHnTFqNQZ3DB5B-f_MovPOMAArm9MRud5CFLxgi3BP6dpsoBAAMCAANtAAMpBA», «file_unique_id»: «AQADub0xG53kIUty», «file_size»: 30064, «width»: 320, «height»: 320 >, < «file_id»: «AgACAgIAAxkBAAMqYuPYTHnTFqNQZ3DB5B-f_MovPOMAArm9MRud5CFLxgi3BP6dpsoBAAMCAAN5AAMpBA», «file_unique_id»: «AQADub0xG53kIUt-«, «file_size»: 133230, «width»: 880, «height»: 880 >, < «file_id»: «AgACAgIAAxkBAAMqYuPYTHnTFqNQZ3DB5B-f_MovPOMAArm9MRud5CFLxgi3BP6dpsoBAAMCAAN4AAMpBA», «file_unique_id»: «AQADub0xG53kIUt9», «file_size»: 138716, «width»: 800, «height»: 800 >] > >

После получения данного массива мы можем сохранить отправленное изображение на своём сервере. Для этого нам нужно с помощью метода getFile получить полный путь к изображению, передав ему в качестве параметра file_id.

Полный код для сохранения будет выглядеть так:

/* токен */ $token = «5340791844:AAEXXDduvInvQrlWHRXykV91USOQSevrPVU»; /* массив с параметрами запроса */ $getQuery = array( «file_id» => «AgACAgIAAxkBAAMqYuPYTHnTFqNQZ3DB5B-f_MovPOMAArm9MRud5CFLxgi3BP6dpsoBAAMCAAN5AAMpBA», ); $ch = curl_init(«https://api.telegram.org/bot». $token .»/getFile?» . http_build_query($getQuery)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HEADER, false); $resultQuery = curl_exec($ch); curl_close($ch); /* записываем ответ в формате PHP массива */ $arrDataResult = json_decode($resultQuery, true); /* записываем URL необходимого изображения */ $fileUrl = $arrDataResult[«result»][«file_path»]; /* формируем полный URL до файла */ $photoPathTG = «https://api.telegram.org/file/bot». $token .»/» . $fileUrl; /* забираем название файла */ $arrFilePath = explode(«/», $fileUrl); $newFilerPath = __DIR__ . «/img/» . $arrFilePath[1]; /* сохраняем файл на сервер */ file_put_contents($newFilerPath , file_get_contents($photoPathTG));

Скрипт для ответа на запросы через Хук

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

Токен бота запишем в константу TG_TOKEN

define(«TG_TOKEN», «5340791844:AAEXXDdu324vInvQrlWHyk8V91USOQSevrPVU»);

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

/* для отправки текстовых сообщений */ function TG_sendMessage($getQuery) < $ch = curl_init(«https://api.telegram.org/bot». TG_TOKEN .»/sendMessage?» . http_build_query($getQuery)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HEADER, false); $res = curl_exec($ch); curl_close($ch); return $res; >/* для отправки изображений */ function TG_sendPhoto($arrayQuery) < $ch = curl_init(‘https://api.telegram.org/bot’. TG_TOKEN .’/sendPhoto’); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $arrayQuery); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HEADER, false); $res = curl_exec($ch); curl_close($ch); return $res; >/* для получения данных о файле */ function TG_getFile($arrayQuery) < $ch = curl_init(«https://api.telegram.org/bot». TG_TOKEN .»/getFile?» . http_build_query($arrayQuery)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HEADER, false); $res = curl_exec($ch); curl_close($ch); return $res; >

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

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

function list_files($path) < if ($path[mb_strlen($path) — 1] != ‘/’) < $path .= ‘/’; >$files = array(); $dh = opendir($path); while (false !== ($file = readdir($dh))) < if ($file != ‘.’ $file != ‘..’ !is_dir($path.$file) $file[0] != ‘.’) < $files[] = $file; >> closedir($dh); return $files; >

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

В переменные $textMessage записывает текст сообщения, а в переменную $chatId записываем id чата.

$data = file_get_contents(‘php://input’); $arrDataAnswer = json_decode($data, true); $textMessage = mb_strtolower($arrDataAnswer[«message»][«text»]); $chatId = $arrDataAnswer[«message»][«chat»][«id»];

Ниже мы проверяем наличие файла в сообщение. Если пользователь отправил файл, то мы его сохраняем в папку с картинками.

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

if(!empty($arrDataAnswer[«message»][«photo»])) < $documentData = array_pop($arrDataAnswer[«message»][«photo»]); >else if(!empty($arrDataAnswer[«message»][«document»]))

Далее мы прописываем проверку на текст сообщения и в случае нужного текста отправляем ответное сообщение.

Если пользователь отправил «Привет», то мы в ответ отправляем сообщение «Привет! Есть фото для меня?». Данное сообщение отправляется с помощью ранее созданной функции TG_sendMessage().

if($textMessage == ‘привет’) < $textMessage_bot = «Привет! Есть фото для меня»; $arrayQuery = array( ‘chat_id’ =>1424646511, ‘text’ => $textMessage_bot, ‘parse_mode’ => «html», ); TG_sendMessage($arrayQuery); >

Ниже пропишем подобный код для запроса изображения. Если пользователь отправил «хочу фото», то мы выбираем рандомное изображение и отправляем его пользователю с помощью функции TG_sendPhoto().

else if($textMessage == ‘хочу фото’) < $textMessage_bot = «Вот, держи!»; $listFile = list_files(__DIR__ . «/img/»); $max = count($listFile) — 1; $randIdFile = rand(0, $max); $filePath = __DIR__ . «/img/» . $listFile[$randIdFile]; $arrayQuery = array( ‘chat_id’ =>$chatId, «photo» => new CURLFile($filePath), «caption» => «Вот твоё фото!» ); TG_sendPhoto($arrayQuery); >

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

if(!empty($documentData)) < $arrayQuery = array( «file_id» =>$documentData[«file_id»], ); $resultQuery = TG_getFile($arrayQuery); /* записываем ответ в формате PHP массива */ $arrDataResult = json_decode($resultQuery, true); /* записываем URL необходимого изображения */ $fileUrl = $arrDataResult[«result»][«file_path»]; /* формируем полный URL до файла */ $photoPathTG = «https://api.telegram.org/file/bot». TG_TOKEN .»/» . $fileUrl; /* забираем название файла */ $arrFilePath = explode(«/», $fileUrl); $newFilerPath = __DIR__ . «/img/» . $arrFilePath[1]; /* сохраняем файл на сервер */ file_put_contents($newFilerPath , file_get_contents($photoPathTG)); $arrayQuery = array( ‘chat_id’ => 1424646511, ‘text’ => «Отличное фото! Я его, пожалуй, сохраню», ‘parse_mode’ => «html», ); TG_sendMessage($arrayQuery); >

Ну и на последок, давайте пропишем ещё 2 условия. Первое условие будет отправлять кнопку в чат, а второе условие будет проверять нажатие на кнопку и отправлять дополнительное сообщение.

Запрос для отправки кнопок создаём аналогично запросу со словом «Привет». По запросу мы будем отправлять 2 кнопки с callback_data — but_1 и but_2.

if($textMessage == ‘отправь кнопки’) < $textMessage_bot = «Вот твои кнопки! Нажимай»; $arrayQuery = array( ‘chat_id’ =>1424646511, ‘text’ => $textMessage_bot, ‘parse_mode’ => «html», ‘reply_markup’ => json_encode(array( ‘inline_keyboard’ => array( array( array( ‘text’ => ‘Кнопка 1’, ‘callback_data’ => ‘but_1’, ), array( ‘text’ => ‘Кнопка 2’, ‘callback_data’ => ‘but_2’, ) ), ), )), ); TG_sendMessage($arrayQuery); >

Теперь давайте пропишем проверку нажатия на кнопки. Здесь нам нужно записать в переменную $dataBut код нашей кнопки, чтобы по нему в дальнейшем делать проверку. В переменную $textMessage и $chatId мы так же записываем текст сообщения и id пользователя, только в этот раз достаём эти данные из массива с ключом callback_query.

Ниже проверяем код нажатой кнопки и отправляем простое текстовое сообщение в ответ.

if($arrDataAnswer[«callback_query»]) < $dataBut = $arrDataAnswer[«callback_query»][«data»]; $textMessage = mb_strtolower($arrDataAnswer[«callback_query»][«message»][«text»]); $chatId = $arrDataAnswer[«callback_query»][«message»][«chat»][«id»]; if($dataBut == «but_1») < $arrayQuery = array( ‘chat_id’ =>1424646511, ‘text’ => «Ты нажал на ‘КНОПКА 1′», ‘parse_mode’ => «html», ); TG_sendMessage($arrayQuery); > else if($dataBut == «but_2») < $arrayQuery = array( ‘chat_id’ =>1424646511, ‘text’ => «Ты нажал на ‘КНОПКА 2′», ‘parse_mode’ => «html», ); TG_sendMessage($arrayQuery); > >

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

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

Еще по теме:  Анонимно истории в инст Телеграм

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

На этом всё!
Больше интересных статей в нашей группе — https://vk.com/progtime
Вы так же можете разместить свой вопрос на нашем форуме, где другие программисты смогут вам помочь в решение вашей задачи — https://vk.com/prog_time
Так же прокачивайте свои навыки на нашем канале — https://www.youtube.com/c/ProgTime

Наши планы

  • Написание материала для курса по разработке ботов на Telegram
  • Разработка универсального парсера на PHP

Поддержите мой сайт!

Каждый переведённый донат, мотивирует на создание новых записей и уроков на YouTube

Источник: prog-time.ru

Отправка сообщений в телеграм с помощью JavaScript (JQuery) и PHP

ddr64.link

Сегодня я опишу основы, как можно отправлять сообщения, фото, видео или аудио в ваш telegram канал с помощью JavaScript или PHP.

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

В телеграме нужно найти, через поиск, бота BotFather, и добавить его в телеграм. С помощью бота BotFather, мы будем создавать своих ботов. Для этого заходим в бот BotFather, пишем /newbot и отправляем сообщение боту.

Создание телеграмм бота

Создание телеграмм бота

После того, как вы отправили /newbot, вам нужно придумать название для ваше бота. В моем случае, я назвал бот myddr64_bot

Создание телеграмм бота

Теперь нужно придумать еще имя пользователя для нашего бота, одно из условий, имя должно заканчиваться на окончание “bot”. У меня, что имя бота, что имя пользователя, называются одинаково, хотя в названии бота, не обязательно использовать окончание “bot”.

Создание телеграмм бота

После того, как вы придумаете имя пользователя, и отправите его боту, вы в ответ получите токен (715125500:AAHJCKYqq9AR_3yvn6EI7m5VTs_2ThYaav0), с помощью которого, вы будете иметь доступ к вашему созданному боту.

Сразу скажу, бот, который я привожу в примере, я уже удалил.

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

Создание телеграмм бота

По сути, чтобы отправить сообщение в телеграм канал, нам достаточно в адресной строки нашего браузера создать запрос определенного формата.

Источник: ddr64.link

Ещё один telegram-бот или реализация бота для знакомств

Ещё один telegram-бот или реализация бота для знакомств

2018-11-18 в 19:08, admin , рубрики: .net, c-sharp, C#, telegram, telegram bots, Системы обмена сообщениями

Меня зовут Влад, по роду деятельности я — военный, но подрабатываю в компании автоматизации бизнеса, где и занимаюсь программированием на .net.

Краткая предыстория

В момент очередного схождения-расхождения с моей бывшей(очередной) невестой, она обмолвилась, что от скуки искала себе парней на свидания через telegram-бота, которому можно было отправить фото и геолокацию и тебе подбирало людей, которые находятся поблизости. Я пообещал, что напишу что-то похожее, если мы опять разбежимся. Яра — это для тебя.
Я благополучно забыл про это, но в момент очередного безделья, я скролил сайт с кексом на зелёном фоне, где наткнулся на раздел, где люди просто выкладывали пост с фото, коротко писали о себе и указывали контакты.

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

Задача

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

Ещё один telegram-бот или реализация бота для знакомств - 1

Подготовка к работе

Как создавать бота через BotFather не знает только тот, кому это не интересно, так что наполнять статью лишней информацией я не стану.

Хранение «анкет»

Первоначально я создал проект ClassLibrary, который и собрался использовать для работы с данными.

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

public class user < [Key] public string tg_id < get; set; >//Уникальный айди пользователя public string name < get; set; >//Отображаемое имя public string age < get; set; >// Возраст public string country < get; set; >// Страна public string city < get; set; >//Город public string gender < get; set; >//Пол public string photo < get; set; >//Ссылка на фото public string tg_username < get; set; >//Телеграмовский ник-нейм, по которому можно будет перейти к пользователю в личную переписку public string tg_chat_id < get; set; >//Айди чата, куда отправлять ответ >

Для хранения была выбрана БД PostgreSQL, которая была развернута на удаленном сервере.
Предварительно, устанавливаем EntityFramework, через NuGet. Это нереально упрощает жизнь в работе с БД.

Для работы требуется пакет:

А для миграций требуется пакет:

Чтобы не заниматься рутинным созданием таблицы, просто создаем саму модель данных(наш класс выше) и задаем подключение к БД.

public DbSet user < get; set; >protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

В дальнейшем выполняем миграцию.

Для этого в Консоли диспетчера пакетов выполняем команды:
enable-migrations
Включаем механизм миграций
Add-migration *Имя миграции*
Создаем миграцию
update-database
Обновляем БД

Теперь у нас в БД появятся две таблицы: История миграций и сама таблица user.

Еще по теме:  Как подписаться на канал в Телеграмме на Айфоне по названию

Ещё один telegram-бот или реализация бота для знакомств - 2

После решения вопроса хранения данных и коннекта к БД, можно переходить к написанию самого бота-обработчика.

Бот-обработчик

Сам telegram предлагает два варианта получения обновлений: webhook или постоянно дергать сервера, проверяя обновления. Webhook имеет большое количество сложностей, поэтому проще просто проверять обновления.

Получение обновлений их обработка

Для того, чтобы не создавать велосипед(иногда бывает полезно), проще использовать готовое решение: Telegram.Bot by MrRoundRobin — отличная, очень удобная библиотека для работы с Telegram.

Создаем в решение новый проект ConsoleApp, куда и устанавливаем этот пакет.

Таким образом, мы начали проверку на обновления и поставили свои обработчики ошибок.
BotOnMessageReceived — обработчик получения «обычных» сообщений
BotOnCallbackQueryReceived — обработчик нажатия кнопок, которые появляются под сообщением.

Дело за малым, возможность оставить анкету и возможность пролистать остальные. Так что нужно отправить пользователю две кнопки: Регистрация и Дальше. Кнопка представляет объект InlineKeyboardButton , а все кнопки нужно упаковать в

IEnumerable>

При открытии бота, ему сразу же отправляется сообщение с текстом «/start», так что нам нужно в BotOnMessageReceived обработать это сообщение и отправить в ответ наши кнопки.

Регистрация

Для регистрации, нужно запоминать, что пользователь ввел ранее. То есть нам нужно создать хранилище памяти бота. Я просто создал класс, где описал логику заполнения данных.

RegForm.cs
public class RegForm < public string tg_id < get; set; >public string name < get; set; >public string age < get; set; >public string country < get; set; >public string city < get; set; >public string gender < get; set; >public string photo < get; set; >public string tg_username < get; set; >public string tg_chat_id < get; set; >public int stage; public RegForm(string id, string chat_id, string username) < stage = 1; tg_id = id; tg_username = username; >public (string, int) StageText(string id) < if (stage == 1) return («Введите отображаемое имя:», stage); if (stage == 2) return («Введите возраст:», stage); if (stage == 3) return («Введите Вашу страну:», stage); if (stage == 4) return («Введите Ваш город:», stage); if (stage == 5) return («Введите Ваш пол:», stage); else return («Отправьте боту Ваше фото:», stage); >public bool SetParam(string param) < if (stage == 1) name = param; if (stage == 2) age = param; if (stage == 3) country = param; if (stage == 4) city = param; if (stage == 5) gender = param; if (stage == 6) photo = param; stage++; return true; >>

В данном классе можно реализовать валидацию данных, например, не пропустить возраст в виде текста и т.п.

А самой памятью выступает static Dictionary registrations = new Dictionary(); , в который мы добавляем новый KeyValuePair, при нажатии на кнопку.

Чтобы бот знал, как ему реагировать на нажатие, нужно в BotOnCallbackQueryReceived добавить

var message = e.CallbackQuery; if (message.Data == «Registration») < RegForm form = new RegForm(message.From.Id.ToString(), message.Message.Chat.Id.ToString(), message.From.Username);//Создаем новую форму регистрации registrations.Add(message.From.Id.ToString(), form);//Добавляем форму в «память», где ключом будет telegram_id пользователя. var t = form.StageText(form.tg_id); //Получаем текст, который отправим пользователю, в зависимости от стадии регистрации. Bot.SendTextMessageAsync(message.Message.Chat.Id, t.Item1);//отправляем сообщение пользователю. return; >

И таким же образом, обрабатывая полученные данные, можно заполнить форму и сохранить данные.

using (Context db = new Context()) < IMapper mapper = new MapperConfiguration(cfg =>cfg.CreateMap()).CreateMapper(); if (db.user.Where(x => x.tg_id == message.From.Id.ToString()).Count() != 0) db.user.Update(mapper.Map(u)); else < db.user.Add(mapper.Map(u)); > db.SaveChanges(); >

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

Сохранение фото пользователя
if (message.Type == MessageType.Photo) < string file = Bot.GetFileAsync(message.Photo[message.Photo.Count() — 1].FileId).Result.FilePath; string filepath = message.From.Id + «.» + file.Split(‘.’).Last(); using (FileStream fileStream = new FileStream(«C:images» + filepath, FileMode.OpenOrCreate, FileAccess.ReadWrite)) < var st = Bot.DownloadFileAsync(file).Result; st.Position = 0; st.CopyTo(fileStream); >u.SetParam(«C:images» + filepath); >

Показ остальных анкет

Для этого просто нужно брать данные из БД и отправлять пользователю.

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

public static User GetRandom() < Stopwatch s = new Stopwatch(); s.Start(); User u; using (Context db = new Context()) < Random r = new Random(); int count = db.user.Count(); if (count >1) count = count — 1; List users = mapper.Map, List>(db.user.ToList()); u = users.ElementAt(r.Next(0, count)); > Console.WriteLine(«[» + DateTime.Now + «] For finding » + s.ElapsedMilliseconds + » ms»); s = null; return u; >

Обработчик нажатия кнопки Next:

if (message.Data == «Next») < if (searchForms.Count != 0) < searchForms.Remove(message.From.Id.ToString()); >IMapper mapper = new MapperConfiguration(cfg => cfg.CreateMap()).CreateMapper(); User user = BaseWorker.GetRandom(); SendAnket(user, message.Message.Chat.Id.ToString());//Метод, который создает форматирование в сообщении. return; >

Заключение

При всей своей простоте, бот понравился публике.

Меньше чем за сутки, 134 юзера оставили свои анкеты, есть положительные отклики. И без особой рекламы — лишь один пост на сайте, который особо плюсов не набрал.

Боты — это давно забытое старое, которое обрело новую жизнь. Они помогают реально автоматизировать многие процессы и даже искать себе пару в интернете. В обход забитых монетизацией сайтов знакомств.

Спасибо, что дочитали до конца.

Good luck, have fun, dont eat yellow snow.

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

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