رادکام
1- ایجاد ربات
ابتدا از طریق BotFather@ یک بات ایجاد می نماییم. BotFather@ دستورات متعددی دارد که پس از اولین start/ خود این بات لیست دستورات را به شما نمایش می دهد. ما فقط نیازمند دو دستور از مجموعه دستورات این بات هستیم.
همچنین می توانید توسط دستور /setname نام بات خود را تغییر دهید. پس از آنکه ربات مورد نظر را ایجاد کردیم اکنون باید این ربات را به عنوان مدیر کانال به آن اضافه نماییم.
ارسال و دریافت در تلگرام به دو روش GetUpdates و Webhook انجام می شود. در GetUpdates برای اینکه متوجه شویم درخواستی به ربات ما ارسال شده است باید این کار را از طریق برنامه کنترل کنیم و وضعیت درخواست های ارسال شده را بررسی نماییم اما در روش Webhook این کار بصورت خودکار انجام می شود و پس از هرخواست به ربات این درخواست به سروری که مشخص کرده ایم ارسال می گردد. البته این سرور حتما باید دارای گواهی SSL باشد. از آنجایی که ما در این برنامه فقط نیازمند ارسال اطلاعات به کانال هستیم و هیچ دریافت اطلاعاتی نداریم از روش GetUpdates استفاده می نمایید. برای اطلاعات بیشتر می توانید بخش دریافت بروزرسانی وب سایت تلگرام را مطالعه نمایید.
2- استفاده از ربات
در GitHub تلگرام کتابخانه ای برای تعامل با APIهای موجود در تلگرام ارائه شده است اما در اینجا قصد داریم بطور مستقیم از APIهای فراهم شده توسط تلگرام استفاده نماییم و از کتابخانه موجود استفاده نمی کنیم.
ارسال متن به کانال:
برای ارسال متن به کانال از متد زیر استفاده می نماییم.
1 2 3 4 5 6 7 8 |
public static void SendTextMessageToChannel(string botToken, string channelId, string message) { var address = string.Format("https://api.telegram.org/bot{0}/sendMessage?chat_id={1}&text={2}", botToken, channelId, message); using (var webClient = new System.Net.WebClient()) { webClient.DownloadString(address); } } |
پارامترهای موردنیاز عبارتند از
ارسال فایل، صوت، تصویر و ویدئو به کانال:
متد زیر برای ارسال فایل استفاده می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
public static void SendFileToChannel(string botToken, string channelId, string filePath) { var fileName = System.IO.Path.GetFileName(filePath); var file = System.IO.File.ReadAllBytes(filePath); using (var httpClient = new System.Net.Http.HttpClient()) { var api = string.Format("https://api.telegram.org/bot{0}/sendDocument?chat_id={1}", botToken, channelId); using (var multipartFormDataContent = new System.Net.Http.MultipartFormDataContent()) { var streamContent = new System.Net.Http.StreamContent(new System.IO.MemoryStream(file)); streamContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream"); streamContent.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("form-data") { FileName = fileName, Name = "document" }; multipartFormDataContent.Add(streamContent, "document", fileName); using (var messageFile = httpClient.PostAsync(api, multipartFormDataContent)) { messageFile.Result.Content.ReadAsStringAsync(); } } } } |
پارامترهای این متد عبارتند از
این متد یک فایل ارسال می نماید. اما در تلگرام می توان صوت، تصاویر و فایل های ویدئویی (و...) را نیز بطور مشخص که نیاز به دانلود نداشته باشند و بطور خودکار در برنامه اجرا شوند، نیز ارسال کرد. برای مثال کد زیر برای ارسال تصاویر قابل استفاده است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
public static void SendPhotoToChannel(string botToken, string channelId, string filePath, string caption = "") { var fileName = System.IO.Path.GetFileName(filePath); var file = System.IO.File.ReadAllBytes(filePath); var captionParemater = !string.IsNullOrEmpty(caption) ? string.Format("&caption={0}", caption) : string.Empty; using (var httpClient = new System.Net.Http.HttpClient()) { var api = string.Format("https://api.telegram.org/bot{0}/sendPhoto?chat_id={1}{2}", botToken, channelId, captionParemater); using (var multipartFormDataContent = new System.Net.Http.MultipartFormDataContent()) { var streamContent = new System.Net.Http.StreamContent(new System.IO.MemoryStream(file)); streamContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream"); streamContent.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("form-data") { FileName = fileName, Name = "photo" }; multipartFormDataContent.Add(streamContent, "photo", fileName); using (var messageFile = httpClient.PostAsync(api, multipartFormDataContent)) { messageFile.Result.Content.ReadAsStringAsync(); } } } } |
9,088بازدید
دیدگاه کاربران
هنوز دیدگاهی ثبت نشده است.
شما میتوانید درباره این مقاله، دیدگاه خود را ثبت کنید.