Esempio n. 1
0
        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) { }
        }
Esempio n. 2
0
        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);
        }