BadCats
@BadCats

Telegram Bot API не отправляет файл?

С наступающим! (для всех, читающих в 2020 - с наступившим!) )

Не могу разобраться с ботом - пытаюсь отправить себе файл с ПК.
Собственно, в чем суть бота: дома, в домашней сети wifi стоит Rasbery PI в качестве сервера, на котором в цикле крутится серверная часть с ботом - бот принимает url, по которому нужно сохранить web страницу локально на внешний usb подключенный к малине. Но, я так же, хочу иметь доступ к сохраненным файлам не только в домашней сети, а делать статический ip на малине (на ней так же стоит apache и COPS (OPDS каталогизатор)) - не хочется, поэтому, организовал "общение" все через того же бота:
Собственно, "общение" с ботом (знаю, что можно сделать клавиатуру с кнопками, но это больше тренировочный проект - для себя и тут мне даже интереснее сделать велосипед)
if (e.Message.Text.StartsWith("$"))//command
            {
                switch (e.Message.Text)
                {
                    case "$help":
                        bot.SendTextMessageAsync(new Telegram.Bot.Types.ChatId(id), "send me some commands:\n $help  -to see commands list\n" +
                            "$books_log - to see list of saved books (from log file)\n $books_list - to see list of saved books(get files name from storage)\n $download - to download some article");
                        break;
                    case "$books_log":
                        bot.SendTextMessageAsync(new Telegram.Bot.Types.ChatId(id), File.ReadAllText("URLLogs.txt"));
                        break;
                    case "$books_list":
                        GetBooksList();
                        break;


                    default:
                        if (e.Message.Text.StartsWith("$download"))
                        {
                            string pathToFile = GetDownloadFilePath(e.Message.Text.Substring(e.Message.Text.IndexOf(" ") + 1), e);
                            try
                            {
                                if (File.Exists(pathToFile))
                                {
                                    Console.WriteLine("file exist");
                                }
                                else
                                {
                                    Console.WriteLine("file NOT exist");
                                }



                                using (var stream = File.OpenRead(pathToFile))
                                {
                                    InputOnlineFile iof = new InputOnlineFile(stream);
                                    iof.FileName = "";
                                    var send = bot.SendDocumentAsync(new Telegram.Bot.Types.ChatId(id), iof, "Сообщение");
                                }

                                //bot.SendDocumentAsync(new Telegram.Bot.Types.ChatId(id), new Telegram.Bot.Types.InputFiles.InputOnlineFile(pathToFile));

                            }
                            catch (Exception ex)
                            {

                                Console.WriteLine(ex);
                            }
                        }
                        break;
                }

                return false;
            }

Суть проблемы: код отрабатывает, без ошибок, в консоль выводится, что файл существует, но сам файл (htm страницу) - я не получаю.
  • Вопрос задан
  • 2055 просмотров
Пригласить эксперта
Ответы на вопрос 1
AlexanderYudakov
@AlexanderYudakov
C#, 1С, Android, TypeScript
Судя по имени метода "SendTextMessageAsync", при его вызове нужно использовать "await".

То же самое касается вызова метода "SendDocumentAsync".
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы