static void Main(string[] args) { PixivDownloader downloader = new PixivDownloader("pixiv.json"); IRCClient ircClient = JsonConvert.DeserializeObject <IRCClient>(File.ReadAllText("irc.json")); ircClient.PixivDownloader = downloader; TelegramClient telegramClient = JsonConvert.DeserializeObject <TelegramClient>(File.ReadAllText("telegram.json")); telegramClient.PixivDownloader = downloader; telegramClient.Setup(); DiscordClient discordClient = JsonConvert.DeserializeObject <DiscordClient>(File.ReadAllText("discord.json")); discordClient.PixivDownloader = downloader; discordClient.IRCClient = ircClient; ircClient.DiscordClient = discordClient; ircClient.Setup(); ircClient.Connect(); var ircRun = new Task(ircClient.Run); ircRun.Start(); discordClient.Client.MessageReceived += async(msgArgs) => { if (msgArgs.Channel.Id == 337692280267997196 && msgArgs.Author.Id != discordClient.Client.CurrentUser.Id) { foreach (var attach in msgArgs.Attachments) { await ircClient.SendAsync($"PRIVMSG #onioniichan :{attach.Url}"); } } }; var discordRun = new Task(async() => await discordClient.Run()); discordRun.Start(); var telegramRun = new Task(async() => await telegramClient.Run()); telegramRun.Start(); var tasks = new List <Task>(); tasks.Add(ircRun); tasks.Add(discordRun); tasks.Add(telegramRun); Task.WaitAll(tasks.ToArray()); //try { // telegramClient.CTS.Cancel(); //} //catch (Exception ex) { } }
async Task HandleUpdateAsync(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken) { // Only process Message updates: https://core.telegram.org/bots/api#message if (update.Type != UpdateType.Message) { return; } // Only process text messages if (update.Message !.Type != MessageType.Text) { return; } var chatId = update.Message.Chat.Id; var messageText = update.Message.Text; int maxPages = 4; if (messageText.StartsWith("/pixiv")) { try { long id = Pixiv.Utils.GetWorkID(messageText); var illust = await PixivDownloader.GetIllustration(id); List <IAlbumInputMedia> items = new List <IAlbumInputMedia>(); bool isFirstSent = true; foreach (var imageTask in PixivDownloader.DownloadIllistrationAsync(illust, maxPages: 10, maxBytes: 8388119)) { using (var image = await imageTask) { var ms = new MemoryStream(); image.ImageData.CopyTo(ms); ms.Position = 0; items.Add(new InputMediaPhoto(new InputMedia(ms, image.Filename)) { Caption = isFirstSent? illust.ToString() : null }); isFirstSent = false; //image.ImageData.Position = 0; } } await botClient.SendMediaGroupAsync(chatId, items); //foreach (var imageTask in PixivDownloader.DownloadIllistrationAsync(illust, maxPages: 4, maxBytes: 8388119).ToList()) { // using (var image = await imageTask) { // string text = isFirstSent ? illust.ToString() : string.Empty; // if (isFirstSent && maxPages > 0 && illust.PageCount > maxPages) ; // text += $" [Showing {maxPages} images out of {illust.PageCount}]"; // if (!image.IsOriginal) // text += " (preview version)"; // text = text.Trim(); // isFirstSent = false; // Console.WriteLine($"Sending page {image.PageNumber}"); // await botClient.SendPhotoAsync(chatId, new InputOnlineFile(image.ImageData, image.Filename), string.IsNullOrEmpty(text) ? null : text); // } //} return; } catch (Exception ex) { } } Console.WriteLine($"Received a '{messageText}' message in chat {chatId}."); // Echo received message text //Message sentMessage = await botClient.SendTextMessageAsync( // chatId: chatId, // text: "You said:\n" + messageText, // cancellationToken: cancellationToken); }