انجمن برنامه نویسان البرز

تبلیغات

ارسال فایل از طریق ربات تلگرام


این مقاله از مربوط به دوره آموزش ساخت ربات تلگرام در سی شارپ است. اگر درس های قبلی این مجموعه را ندیدید و با ساخت ربات تلگرام در سی شارپ آشنایی ندارید، پیشنهاد میدهم ابتندا درس های قبلی را ببینید. در این مقاله، روش ارسال فایل از طریق ربات را به شما آموزش میدهم.

اگر طرفدار آموزش های ویدیویی هستید، این ویدیو را ببینید تا سریعتر یاد بگیرید. در غیر این صورت به ادامه مطلب بروید و آموزش متنی را بخوانید.

برای ارسال فایل ها از طریق ربات، اول یک شیئ ربات میسازیم و توکن را به آن میدهیم:


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 استفاده میکنیم.




کلمات کلیدی :

نظر بدهید

12 دیدگاه برای “ارسال فایل از طریق ربات تلگرام

  • ابوالفضل علیزاده گفته
    ۲۹ خرداد ۹۷

    با عرض سلام و خسته نباشد
    من در ساخت استریم همیشه یک مشکل داشتم
    در حقیقت همیشه این خطا رو به من می داد
    System.NotSupportedException: ‘The given path’s format is not supported.’
    و حتی به صورت run as administrator هم ویژوال رو باز کردم مشکل حل نشد

    • علیرضا صبوئی گفته
      ۲۹ خرداد ۹۷

      قبا از آدرس یک @ بگذارید. اگر باز هم فیکس نشد، آدرس را غلط میدهید. کد خط آدرس را برایم اینجا بفرستید.

  • AmiR گفته
    ۲۹ خرداد ۹۷

    بازم مثل همیشه عاللللللللییی.خسته نباشین

  • MosTafa گفته
    ۲۹ خرداد ۹۷

    سلام.
    ببخشید من میخوام فایل برای یه فرد ارسال بشه
    به نظرم کد هم درسته ولی کار نمیکنه
    لطفا کمک کنید.

  • بهنام گفته
    ۲۹ خرداد ۹۷

    سلام، بابت ویدئو ممنون واقعا خسته نباشید.
    یه درخواستی داشتم اونم اینه که اگه نحوه دریافت فایل و اطلاعات فایل از بات و ارسال فایل از طریق بات با استفاده از file_id موجود در تلگرام رو هم آموزش بدید ممنون.

  • ناشناس گفته
    ۲۹ خرداد ۹۷

    سلام لطفا یاد بدین چطور یه نفر اومد به گروه بهش پیغام بدین
    ممنونم اموزش هاتون عالیه

  • فرشاد گفته
    ۲۹ خرداد ۹۷

    سلام استاد
    چجوری میشه فایلهای ویدئو با حجم بیشتر از ۲-۳ مگ رو ارسال کرد.
    با تشکر

    • علیرضا صبوئی گفته
      ۲۹ خرداد ۹۷

      فرشاد عزیز من امتحان نکردم. مگه محدودیتی در این مورد هستش؟

  • امین گفته
    ۲۹ خرداد ۹۷

    سلام. اگر ناگت رو آپدیت کنیم به آخرین نسخه اصلا رشته های ساخت کیبورد رو نداره و اونجا به مشکل میخورم.اگر هم نسخه ۱۳ باشه تایپ InputFiles رو نداره و نمیشناسه و به جاش FileToSend رو اضافه کردن که ساختارش فرق میکنه. الان باید چیکار کنم ؟ اگه میشه راهنمایی کنید.تشکر

    • علیرضا صبوئی گفته
      ۲۹ خرداد ۹۷

      جای کلاس های ساخت کیبورد، در نسخه آخر تغییر کرده. یه مقدار بالا پایینش کنید، جاشو پیدا میکنید

  • مبین گفته
    ۲۹ خرداد ۹۷

    سلام استادعزیز.مطالب شما برای بنده بسیار عالی بوده.بحث ربات بسیار شیرین و کاربردی هست.اگر امکانش وجود داره مطالب دیگه رو بفرمایید .چون در مبحث ساخت ربات مدتی هست که مطلب جدیدی رو اضافه نکردید .با سپاس

  • Esi گفته
    ۲۹ خرداد ۹۷

    سلام مهندس.
    اگه دقت کرده باشین توی ربات های تلگرام موجود، فایل رو به این نحو ارسال نمیکنن.فایل رو خیلی سریع برای کاربر می‌فرسته و این شبیه آپلود کردن نیست. میشه روش کارشون رو توضیح بدین؟