- Автор темы
- #1
Наша программа будет уметь делать следующие функции:
Если Вы не можете подключиться к боту используйте VPN сервер, или же подключитесь напрямую через Proxy к TelegramBotClient - Об этом в следующем уроке.
Создаём класс Telega.cs
Подключим все зависимости:
Создадим переменную bot от TelegramBotClient внутри класса Telega
Запишем функцию отправки и удаления сообщения
В классе Program.cs
Теперь в классе Telega.cs - запишем функцию которая будет отправлять скриншот
В классе Program.cs вызываем так:
Если Вы хотите массово отправить файлы сделайте это следующим способом:
Вызывается так:
Ну и на по следок получим информацию о боте:
В классе Telega.cs запишем функцию которая получит нужную нам информацию:
Вызывается просто:
На этом всё =) Всем удачи.
Готовый код:
Код писался давно, многое можно переписать, но лень) Может кому-то будет полезно, что-то для себя возьмёт.
Пользуйтесь! ))
- Отправлять скриншот
- Отправлять сообщения
- Отправлять файлы
- Получать информацию ( пока о боте )
Если Вы не можете подключиться к боту используйте VPN сервер, или же подключитесь напрямую через Proxy к TelegramBotClient - Об этом в следующем уроке.
Создаём класс Telega.cs
Подключим все зависимости:
C#:
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
C#:
public class Telega
{
private static TelegramBotClient bot; // Переменная bot
}
Запишем функцию отправки и удаления сообщения
C#:
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}\r\n"); }
}
}
}
В классе Program.cs
C#:
using System;
using System.IO;
using System.Text;
internal static partial class Program
{
// Получаете данные в своём телеграм боте, и после прописываете их в коде.
private static string token = "8600:AAHzYkm8eZKd***"; // тут ваш токен
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\r\n"); }
}
}
Теперь в классе Telega.cs - запишем функцию которая будет отправлять скриншот
C#:
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 вызываем так:
C#:
using System;
using System.IO;
internal static partial class Program
{
private static string token = "860740080:AAHzYkm8eSYmZKd***"; // Ваш токен
private static int id = 49755****; // Ваш ID
private static readonly string DesktopFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "Lesson.cs"); // Ваш файл
public static void Main()
{
Console.Title = "TelegramBot"; // Заголовок консоли
try
{
Telega.SendFile(token, id, DesktopFile).Wait(); // Отправка файла с ожиданием (wait())
}
catch (AggregateException) { File.AppendAllText("ConnectError.txt", "Ошибка подключения возможно вы находитесь за NAT. Используйте Proxy сервер или VPN\r\n"); }
}
}
Если Вы хотите массово отправить файлы сделайте это следующим способом:
C#:
public static void MassSendFiles(string token, int id, string dir, string pattern)
{
try
{
if (!string.IsNullOrWhiteSpace(token))
{
foreach (string files in Directory.EnumerateFiles(dir, pattern, SearchOption.TopDirectoryOnly))
{
SendFile(token, id, files).Wait();
}
}
}
catch (Exception ex) { Console.WriteLine(ex.Message); }
}
Вызывается так:
C#:
private static readonly string DesktopFile = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
Telega.MassSendFiles(token, id, DesktopFile, "*zip");
Ну и на по следок получим информацию о боте:
В классе Telega.cs запишем функцию которая получит нужную нам информацию:
C#:
public static void GetInfo(string token)
{
if (!string.IsNullOrWhiteSpace(token))
{
try
{
bot = new TelegramBotClient(token);
var basa = new StringBuilder();
User me = bot.GetMeAsync().Result;
if (me.IsBot)
{
basa.AppendLine($"Логин бота: {me.Username}");
basa.AppendLine($"Имя бота: {me.FirstName}");
basa.AppendLine($"ID бота: {me.Id.ToString()}");
}
Console.WriteLine(basa?.ToString());
}
catch (AggregateException) { Console.WriteLine("Соединение блокировано, используйте Proxy Сервер"); }
}
}
Вызывается просто:
C#:
Telega.GetInfo(token);
Console.ReadKey();
На этом всё =) Всем удачи.
Готовый код:
C#:
namespace NewBot
{
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;
public class Telega
{
private static TelegramBotClient bot;
public static async Task SendMessage(string token, int destID, string text)
{
try
{
if (!string.IsNullOrWhiteSpace(token))
{
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 { }
}
public static async Task SendPhoto(int chatId, string filePath, string token)
{
if (!string.IsNullOrWhiteSpace(token) || System.IO.Directory.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("Скриншот отправлен успешно!");
}
}
}
}
}
public static async Task SendFile(string token, int id, string filename)
{
if (!string.IsNullOrWhiteSpace(token) || System.IO.File.Exists(filename))
{
bot = new TelegramBotClient(token);
using (FileStream stream = System.IO.File.OpenRead(filename))
{
string ssf = Path.GetFileName(filename); // Получаем имя файла из потока
var Iof = new InputOnlineFile(stream, ssf); // Входные данные для отправки
string fromsend = $"Файл отправлен от: {Environment.UserName}"; // Имя пользователя
Message ss = await bot.SendDocumentAsync(id, Iof, fromsend); // Отправка файла с параметрами.
}
}
}
public static void MassSendFiles(string token, int id, string dir, string pattern)
{
try
{
if (!string.IsNullOrWhiteSpace(token))
{
foreach (string files in Directory.EnumerateFiles(dir, pattern, SearchOption.TopDirectoryOnly))
{
SendFile(token, id, files).Wait();
}
}
}
catch (Exception ex) { Console.WriteLine(ex.Message); }
}
public static void GetInfo(string token)
{
if (!string.IsNullOrWhiteSpace(token))
{
try
{
bot = new TelegramBotClient(token);
var basa = new StringBuilder();
User me = bot.GetMeAsync().Result;
if (me.IsBot)
{
basa.AppendLine($"Логин бота: {me.Username}");
basa.AppendLine($"Имя бота: {me.FirstName}");
basa.AppendLine($"ID бота: {me.Id.ToString()}");
}
Console.WriteLine(basa?.ToString());
}
catch (AggregateException) { Console.WriteLine("Соединение блокировано, используйте Proxy Сервер"); }
}
}
}
}
C#:
namespace NewBot
{
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
internal static partial class Program
{
// private static string token = "860740080:AAHzYkm8eSYmZKd***";
// private static int id = 49757;
private static readonly string txtfile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "file.txt");
private static StringBuilder stringBuilder = new StringBuilder();
public static void Main()
{
Console.Title = "TelegramBot Test connect by Antlion";
stringBuilder.AppendLine($"Привет бот это: {Environment.UserName}");
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("\"Для подключения требуется VPN сервер!\"\r\n");
Console.ForegroundColor = ConsoleColor.Cyan;
Console.Write("Введите токен для подключения: ");
string token = Console.ReadLine(); // тут вводим наш токен бота
Console.Write("Введите ID: ");
int id = Convert.ToInt32(Console.ReadLine());
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine();
Task.Run(() =>
{
//Telega.SendMessage(token, id, stringBuilder.ToString()).Wait();
//Telega.SendPhoto(id, file, token).Wait();
Telega.SendFile(token, id, txtfile).Wait();
});
//string desktopath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "Files");
//Task.Run(() => Telega.MassSendFiles(token, id, desktopath, "*.*"));
Telega.GetInfo(token);
Console.ReadKey();
}
/*
public static void Main()
{
Console.Title = "TelegramBot";
try
{
Telega.GetInfo(token);
Console.ReadKey();
}
catch (AggregateException) { File.AppendAllText("ConnectError.txt", "Ошибка подключения возможно вы находитесь за NAT. Используйте Proxy сервер или VPN\r\n"); }
}
*/
}
}
Код писался давно, многое можно переписать, но лень) Может кому-то будет полезно, что-то для себя возьмёт.
Пользуйтесь! ))