TelegramBot Third lesson - Отправка данных

Тема в разделе "Программирование", создана пользователем Antlion, 27 июн 2019.

  1. Antlion

    Antlion New Member

    Сообщения:
    14
    Симпатии:
    0
    Вы не знаете как работать с телеграм ботом? Тогда этот урок для Вас!

    Итак в части мы создали бота
    в своём проекте​
    Давайте теперь напишем функции которые будут делать следующее:
    • Отправлять скриншот
    • Отправлять сообщения
    • Отправлять файлы
    • Получать информацию ( пока о боте )
    Сразу хочу предупредить чтобы успешно подключиться к боту вы не должны находится за
    Если Вы не можете подключиться к боту используйте VPN сервер, или же подключитесь напрямую через Proxy к TelegramBotClient - Об этом в следующем уроке.
    Создадим

    Класс Telega.cs

    Подключим все зависимости:
    Код:
    using System;
    using System.IO;
    using System.Linq;
    using System.Net.Http;
    using System.Text;
    using System.Threading.Tasks;
    using Telegram.Bot;
    using Telegram.Bot.Types;
    using Telegram.Bot.Types.InputFiles;
    Создадим переменную bot от TelegramBotClient внутри класса Telega
    Код:
    public class Telega
    {
    private static TelegramBotClient bot;
    }
    Запишем функцию отправки и удаления сообщения

    Код:
    public class Telega
    {
    private static TelegramBotClient bot;

    public static async Task SendMessage(string token, int destID, string text)
    {
    if (!string.IsNullOrWhiteSpace(token))
    {
    try
    {
    bot = new TelegramBotClient(token); // Подключение к боту
    Message ss = await bot.SendTextMessageAsync(destID, text); // Отправка сообщения
    Console.WriteLine($"Вы отправили боту текст с сообщением: {ss.Text}"); // В консоль получим сообщение какой текст отправили.
    Console.WriteLine($"Всего сообщений: {ss.MessageId} | Чат ID: {ss.Chat.Id} | Date: {ss.Date}");
    // await bot.DeleteMessageAsync(destID, ss.MessageId); // Удаления сообщения
    }
    catch (ArgumentException ex) { System.IO.File.AppendAllText("ConnectError.txt", $"{ex.Message}
    "); }
    }
    }
    }
    Итак функция отправки сообщения готова, но как же её использовать?
    Да вообще изи смотрим внимательно идём в

    Класс Program.cs

    Код:
    using System;
    using System.IO;
    using System.Text;

    internal static partial class Program
    {
    private static string token = "860740080:AAHzYkm8eSYmZKd***"; // тут ваш токен
    private static int id = 49755****; // тут ваш айди

    private static StringBuilder stringBuilder = new StringBuilder();

    public static void Main()
    {
    Console.Title = "TelegramBot";
    stringBuilder.AppendLine($"Привет {Environment.UserName} это я твой бот =)");
    try
    {
    Telega.SendMessage(token, id, stringBuilder?.ToString()).Wait();
    }
    catch (AggregateException) { File.AppendAllText("ConnectError.txt", "Ошибка подключения возможно вы находитесь за NAT. Используйте Proxy сервер или VPN
    "); }
    }
    }
    Запустим бота и проверим



    Как видим сообщение отправляется =)

    Теперь в классе Telega.cs запишем функцию которая будет отправлять скриншот

    Код:
    public static async Task SendPhoto(string token, int chatId, string filePath)
    {
    if (!string.IsNullOrWhiteSpace(token) || System.IO.File.Exists(filePath))
    {
    using (var form = new MultipartFormDataContent())
    {
    form.Add(new StringContent(chatId.ToString(), Encoding.UTF8), "chat_id");
    using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
    {
    form.Add(new StreamContent(fileStream), "photo", filePath.Split().Last());
    using (var client = new HttpClient())
    {
    await client.PostAsync($"https://api.telegram.org/bot{token}/sendPhoto", form);
    Console.WriteLine("Скриншот отправлен успешно!");
    }
    }
    }
    }
    }
    В классе Program.cs вызывается таким образом

    Код:
    using System;
    using System.IO;

    internal static partial class Program
    {
    private static string token = "860740080:AAHzYkm8eSYmZKd***";
    private static int id = 49755****;
    private static readonly string DesktopFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "Screenshot_4.png");
    public static void Main()
    {
    Console.Title = "TelegramBot";
    try
    {
    Telega.SendPhoto(token, id, DesktopFile).Wait();
    }
    catch (AggregateException) { File.AppendAllText("ConnectError.txt", "Ошибка подключения возможно вы находитесь за NAT. Используйте Proxy сервер или VPN
    "); }
    }
    }
    Запускаем программу и проверяем..



    Супер фотография отправлена =)

    Переходим к следу

Поделиться этой страницей