این مقاله از مربوط به دوره آموزش ساخت ربات تلگرام در سی شارپ است. اگر درس های قبلی این مجموعه را ندیدید و با ساخت ربات تلگرام در سی شارپ آشنایی ندارید، پیشنهاد میدهم ابتندا درس های قبلی را ببینید. در این مقاله، روش ارسال فایل از طریق ربات را به شما آموزش میدهم.
اگر طرفدار آموزش های ویدیویی هستید، این ویدیو را ببینید تا سریعتر یاد بگیرید. در غیر این صورت به ادامه مطلب بروید و آموزش متنی را بخوانید.
برای ارسال فایل ها از طریق ربات، اول یک شیئ ربات میسازیم و توکن را به آن میدهیم:
Telegram.Bot.TelegramBotClient bot = new Telegram.Bot.TelegramBotClient("Your Token");
سپس فایل را از روی هارد خوانده و آنرا در یک Stream نگه داریم. سپس این Stream را از طریق سی شارپ، به ربات ارسال کنیم. به همین سادگی! دقت کنید که مسیری کد نمونه، از کامپیوتر من است. آنرا اصلاح کنید.
System.IO.FileStream fileStream = new FileStream(@"E:\Pictures\1.png", FileMode.Open);
حالا یک شیئ InputOnlineFile میسازیم تا ربات آنرا ارسال کند.
System.IO.FileStream fileStream = new FileStream(@"E:\Pictures\1.png", FileMode.Open); Telegram.Bot.Types.InputFiles.InputOnlineFile inputOnlineFIle = new Telegram.Bot.Types.InputFiles.InputOnlineFile(fileStream);
در قدم بعدی یک شیئ ChatID میسازیم که آی دی کانال ما را نگه دارد. دقت کنید که شیئ ChatID فقط برای کانال و گروه است و برای ChatID کاربران عادی قابل استفاده نیست. اگر خواستید به کاربر عادی فایل ارسال کنید به چت آی دی عددی او نیاز دارید.
Telegram.Bot.Types.ChatId chatId = new Telegram.Bot.Types.ChatId("@YourChannelName");
حالا با استفاده از متد SendDocument فایل را ارسال میکنیم:
bot.SendDocumentAsync(chatId, inputOnlineFIle, "فایل فوق یک تصویر است");
کد کامل، به شکل زیر است:
Telegram.Bot.Types.ChatId chatId = new Telegram.Bot.Types.ChatId("@TestChannel"); System.IO.FileStream fileStream = new FileStream(@"E:\Pictures\1.png", FileMode.Open); Telegram.Bot.Types.InputFiles.InputOnlineFile inputOnlineFIle = new Telegram.Bot.Types.InputFiles.InputOnlineFile(fileStream); bot.SendDocumentAsync(chatId, inputOnlineFIle, "فایل فوق یک تصویر است"); bot.SendPhotoAsync(chatId, inputOnlineFIle, "تصویر");
چک کردن عضویت در کانال:
گاهی وقت ها میخواهیم ربات ما فقط به کسانی سرویس بدهد که در کانال ما عضو هستند. کد چک کردن عضویت یک فرد، به شکل زیر است:
private static void Bot_OnMessage(object sender, Telegram.Bot.Args.MessageEventArgs e) { Telegram.Bot.Types.ChatId chatID = new Telegram.Bot.Types.ChatId("@TestChannel"); var test=bot.GetChatMemberAsync(chatID, e.Message.From.Id).Result.Status; switch (test) { case Telegram.Bot.Types.Enums.ChatMemberStatus.Creator: break; case Telegram.Bot.Types.Enums.ChatMemberStatus.Administrator: break; case Telegram.Bot.Types.Enums.ChatMemberStatus.Member: //انجام عملیات break; case Telegram.Bot.Types.Enums.ChatMemberStatus.Left: //پیغام شما باید عضو شوید break; case Telegram.Bot.Types.Enums.ChatMemberStatus.Kicked: break; case Telegram.Bot.Types.Enums.ChatMemberStatus.Restricted: break; default: break; } }
در این کد ابتدا یک شیئ چت آی دی ساخته میشود که آی دی کانال ما را نگه میدارد و سپس از طریق bot.GetChatMemberAsync چک میکنیم که آیا یک ID در این کانال هست یا خیر. نهایتا برای چک کردن نتیجه، از یک Switch استفاده میکنیم.
کلمات کلیدی :