API Telegram - требуется помощь

alexmin9559

Client
Joined
Oct 19, 2013
Messages
20
Reaction score
35
Points
13
Доброго времени суток!

Требуется помощь в создании кода С# или POST-запроса для отправления в телеграм канал видео до 50мб с описанием, через API.

Пост должен выглядеть примерно так:

66081


Ниже приведён код, который отправляет видео в ТГ, но воспроизводится видео, только после загрузки, в канале видео не воспроизводится.

var bot_id = project.Variables["tg_api"].Value;
var chat_id = project.Variables["tg_chanel"].Value;

string description = project.Variables["description"].Value; //если требуется описание

string File = project.Lists["File"].First();
project.Lists["File"].RemoveAt(0);
project.SendInfoToLog(File);

string data = string.Empty;
data += "--8d769bc76365cd4\n";
data += string.Format("Content-Disposition: form-data; name=\"video\"; filename=\"{0}\"\n", File);
data += "Content-Type: application/octet-stream\n";
data += File;
string resRequest = ZennoPoster.HttpPost(
"https://api.telegram.org/bot" + bot_id + "/sendVideo?chat_id=" + chat_id + "&caption=" + description,
data,
"multipart/form-data",
"",
"UTF-8",
ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
30000,
"",
"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0",
true,
5,
new[] {"Host: api.telegram.org"}
);
 

VerBin

Client
Joined
May 28, 2016
Messages
556
Reaction score
458
Points
63
У телеграмма есть несколько api.
Первый это работа с ботами, второй это работа с сервисом как клиент.
В твоем коде используется api для ботов.

В чем суть задачи? Долго загружается видео?

Можно сначала загрузить видео и получить его media_id и далее в сообщении указать этот параметр.

Есть еще вот такой параметр:

66085
 

alexmin9559

Client
Joined
Oct 19, 2013
Messages
20
Reaction score
35
Points
13
Мне нужно публиковать посты в канале (примерно как на скрине). Всё равно через какое api и автоматом.
Через код выше публикуется вот это:
66087


А руками публикую так:

66088
 
Last edited:

Mikhail B.

Client
Joined
Dec 23, 2014
Messages
14,453
Reaction score
5,472
Points
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с Mikhail B. какие-либо сделки.

Можно отправить видео как файл. Это когда нету пережатия, в таком случае да, нету автозапуска. А можно отправить как видео, тогда видос сжимается на сервере и его можно запустить непосредственно с телеграма. Об этом речь?
 

VerBin

Client
Joined
May 28, 2016
Messages
556
Reaction score
458
Points
63
Отправлять нужно в формате mp4
 

alexmin9559

Client
Joined
Oct 19, 2013
Messages
20
Reaction score
35
Points
13
Отправлять нужно в формате mp4
Отправляю в mp4. Видео, которое я ручками отправляю само запускается в канале, внизу описание. Мне нужно также на автомате через ЗП
 

VerBin

Client
Joined
May 28, 2016
Messages
556
Reaction score
458
Points
63
Так должно быть?
66095
 

alexmin9559

Client
Joined
Oct 19, 2013
Messages
20
Reaction score
35
Points
13
Ответил в личку
 

VerBin

Client
Joined
May 28, 2016
Messages
556
Reaction score
458
Points
63
Достопочтенно автор предложил 500 рублей за потраченное время =)

Поэтому выкладываю решение, возможно кому-то пригодиться;

Добавляем своего бота как администратора в свою группу.

Подключаем внешнюю сборку Telegram.Bot

В using прописываем следующее:
C#:
using Telegram.Bot;
using Telegram.Bot.Types;
using Telegram.Bot.Types.Enums;
using Telegram.Bot.Types.InputFiles;
Код отправки:
C#:
string token = "ТОКЕН ДОСТУПА";
string filePath = "981600635597.mp4"; //имя файла
string channel = "@ИМЯ КАНАЛА"; //имя канала
string description = "<b> Вечер шутов или серьезно с приветом</b>\n\n#мелодрама #комедия\n\n<i>Лирическая новогодняя комедия, действие которой разворачивается 30 декабря.</i>";

var botClient = new TelegramBotClient(token);
var me = botClient.GetMeAsync().Result;
using (FileStream stream = System.IO.File.OpenRead(filePath))
{
    Message message = botClient.SendVideoAsync(
        chatId: channel,
        caption: description,
        parseMode: ParseMode.Html,
        video: new InputOnlineFile(stream),
        supportsStreaming: true
    ).Result;
}
 

Master Woo

Client
Joined
Dec 6, 2014
Messages
122
Reaction score
129
Points
43
Достопочтенно автор предложил 500 рублей за потраченное время =)

Поэтому выкладываю решение, возможно кому-то пригодиться;

Добавляем своего бота как администратора в свою группу.

Подключаем внешнюю сборку Telegram.Bot

В using прописываем следующее:
C#:
using Telegram.Bot;
using Telegram.Bot.Types;
using Telegram.Bot.Types.Enums;
using Telegram.Bot.Types.InputFiles;
Код отправки:
C#:
string token = "ТОКЕН ДОСТУПА";
string filePath = "981600635597.mp4"; //имя файла
string channel = "@ИМЯ КАНАЛА"; //имя канала
string description = "<b> Вечер шутов или серьезно с приветом</b>\n\n#мелодрама #комедия\n\n<i>Лирическая новогодняя комедия, действие которой разворачивается 30 декабря.</i>";

var botClient = new TelegramBotClient(token);
var me = botClient.GetMeAsync().Result;
using (FileStream stream = System.IO.File.OpenRead(filePath))
{
    Message message = botClient.SendVideoAsync(
        chatId: channel,
        caption: description,
        parseMode: ParseMode.Html,
        video: new InputOnlineFile(stream),
        supportsStreaming: true
    ).Result;
}
а где данную библиотеку скачать можно?
 

VerBin

Client
Joined
May 28, 2016
Messages
556
Reaction score
458
Points
63
а где данную библиотеку скачать можно?
Готовые файлы прикрепил в архиве.
Нужно скопировать файлы в каталог установки зенки, в директорию ExternalAssemblies.
 

Attachments

alexsandroid

Client
Joined
Aug 6, 2018
Messages
97
Reaction score
29
Points
18
Нужно скопировать файлы в каталог установки зенки, в директорию ExternalAssemblies.
Вроде все подключил, но выдает ошибку:
Компиляция кода Ошибка в действии "CS0246" "Ошибка в директивах using. The type or namespace name 'Telegram' could not be found (are you missing a using directive or an assembly reference?)". [Строка: 1; Cтолбец: 7]
 

alexsandroid

Client
Joined
Aug 6, 2018
Messages
97
Reaction score
29
Points
18
  • Thank you
Reactions: VerBin

alexmin9559

Client
Joined
Oct 19, 2013
Messages
20
Reaction score
35
Points
13
Кому интересно, во вложении рабочий шаблон, чтобы не устраивать танцы с бубном.
Описание внутри архива.
 

Attachments

alexmin9559

Client
Joined
Oct 19, 2013
Messages
20
Reaction score
35
Points
13
Во вложении рабочий шаблон, без всяких библиотек. Конечный результат - такой же. Описание внутри архива.
 

Attachments

alexmin9559

Client
Joined
Oct 19, 2013
Messages
20
Reaction score
35
Points
13
Третий вариант шаблона, без библиотек и C# кода, реализован через экшен - "POST-запрос". Конечный результат идентичен двум предыдущим. Описание внутри архива.
 

Attachments

Vinovnik

Client
Joined
Aug 10, 2016
Messages
357
Reaction score
107
Points
43
Подскажите, а как загружать большие файлы?
 

dima8121

Client
Joined
Sep 9, 2018
Messages
14
Reaction score
6
Points
3
Кому интересно, во вложении рабочий шаблон, чтобы не устраивать танцы с бубном.
Описание внутри архива.
Здравствуйте. Можно попросить убрать ограничение по версии?
 
Joined
Dec 25, 2021
Messages
26
Reaction score
16
Points
3
Joined
Dec 25, 2021
Messages
26
Reaction score
16
Points
3
Как загружать большие гифки?(более 15мб), чтобы показывалась сразу
 
Last edited:

Dmitryreps

Client
Joined
Oct 5, 2017
Messages
36
Reaction score
19
Points
8
что бы видео воспроизводилось сразу - нужно в конце запроса подписать "supports_streaming=true"
у меня так сработало, надеюсь кому помогло)


101117
 

Lite

Client
Joined
Oct 17, 2013
Messages
294
Reaction score
103
Points
43
Кто-нибудь может подсказать, зачем нужна строчка
"--8d769bc76365cd4\n"
в коде?
C#:
data += "--8d769bc76365cd4\n";
data += string.Format("Content-Disposition: form-data; name=\"video\"; filename=\"{0}\"\n", filePath);
data += "Content-Type: application/octet-stream\n";
data += filePath;
Если параметр убрать вообще, то запрос не проходит, но при этом его можно сократить до "--\n", и всё срабатывает.
 

one

Client
Joined
Sep 22, 2015
Messages
6,849
Reaction score
1,276
Points
113
Кто-нибудь может подсказать, зачем нужна строчка
"--8d769bc76365cd4\n"
в коде?
C#:
data += "--8d769bc76365cd4\n";
data += string.Format("Content-Disposition: form-data; name=\"video\"; filename=\"{0}\"\n", filePath);
data += "Content-Type: application/octet-stream\n";
data += filePath;
Если параметр убрать вообще, то запрос не проходит, но при этом его можно сократить до "--\n", и всё срабатывает.
Я по моему похожий вопрос задавал когда то. ))) Генирировал случай что ли... Не мешало в общем.
 
  • Thank you
Reactions: Lite

bizzon

Client
Joined
Sep 8, 2015
Messages
1,104
Reaction score
132
Points
63
Кто-нибудь может подсказать, зачем нужна строчка
"--8d769bc76365cd4\n"
в коде?
C#:
data += "--8d769bc76365cd4\n";
data += string.Format("Content-Disposition: form-data; name=\"video\"; filename=\"{0}\"\n", filePath);
data += "Content-Type: application/octet-stream\n";
data += filePath;
Если параметр убрать вообще, то запрос не проходит, но при этом его можно сократить до "--\n", и всё срабатывает.
Да, его можно заменить рандом {-Variable.rand-}
 
  • Thank you
Reactions: Lite

Lite

Client
Joined
Oct 17, 2013
Messages
294
Reaction score
103
Points
43
Я по моему похожий вопрос задавал когда то. ))) Генирировал случай что ли... Не мешало в общем.
Тоже подумал, что лучше его вообще снести, или генерить. Чтобы одинаковый параметр не был палевным для разных акков.

p.s. кто будет пробовать варианты с библиотекой- они уже не пашут. Ну точнее надо переписать под новый синтаксис, и мне уже показалось проще сделать на запросах.
 

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)