private async Task soloMethod(Update upd, TelegramBotClient client, ShikimoriClient shikiClient, AnimeStatus status)
        {
            var userId = upd.CallbackQuery.From.Id;
            var mesId  = upd.CallbackQuery.Message.MessageId;
            var chatId = upd.CallbackQuery.Message.Chat.Id;

            if (Bot.GetUserAnime(userId) is null)
            {
                await Task.Yield();

                var bag = await shikiClient.V2AnimeReturn(status).ConfigureAwait(false);

                await Task.Yield();

                Trace.WriteLine($"var bag {bag.Count} \n {Environment.StackTrace}");
                var lst = new UserAnimeList(bag.ToList(), DateTime.Now, userId);
                Trace.WriteLine($"lst {lst.UpdatedAt}");
                Bot.animeAccountsLists[userId] = new UserAnimeList(bag.ToList(), DateTime.Now, userId);
                Trace.WriteLine("dict");
            }
            var page   = Bot.GetAnimePage(userId);
            var keyb   = Bot.GetKeyboard(KeyboardTarget.AnimeItemsMenu) as AnimeEntriesListKeyboard;
            var markup = await keyb.GetKeyboard(page, MovePage.Current).ConfigureAwait(false);

            Trace.WriteLine("markup");
            await client.EditMessageTextAsync(chatId, mesId, "Anime", replyMarkup : markup).ConfigureAwait(false);

            Trace.WriteLine("edit mes");
        }
Example #2
0
        public async Task GetTask(Message mes, TelegramBotClient client)
        {
            try
            {
                if (mes.Text is null || mes.Text.Length != 43)
                {
                    await client.SendTextMessageAsync(mes.Chat.Id, $"Wrong code").ConfigureAwait(false);

                    return;
                }
                var shikiClient = new ShikimoriClient();
                var code        = mes.Text;
                await client.SendTextMessageAsync(mes.Chat.Id, $"<i>Authorizing with code :</i>{Environment.NewLine}<code>{code}</code>", parseMode : Telegram.Bot.Types.Enums.ParseMode.Html);

                await shikiClient.ShikiLogin(code).ConfigureAwait(false);

                await client.SendTextMessageAsync(mes.Chat.Id, $"Logged as {shikiClient.GetNickname()}", replyMarkup : Bot.GetKeyboard(Keyboards.KeyboardTarget.ShikiMenu)?.GetKeyboard()).ConfigureAwait(false);

                Bot.animeAccounts[mes.From.Id] = shikiClient;
            }
            catch (Exception e)
            {
                await client.SendTextMessageAsync(mes.Chat.Id, $"Error {e.Message}{Environment.NewLine}Stack = {e.StackTrace}", replyToMessageId : mes.MessageId).ConfigureAwait(false);

                return;
            }
        }
Example #3
0
        private async Task Aue(Message mes, TelegramBotClient client)
        {
            isRunning = true;
            ShikimoriClient shikiClient;

            if (!Bot.animeAccounts.TryGetValue(mes.From.Id, out shikiClient))
            {
                try
                {
                    shikiClient = new ShikimoriClient();
                    var code = mes.Text.Trim().Split(' ').Last().Trim();
                    await client.SendTextMessageAsync(mes.Chat.Id, $"Authorizing with code={code}", replyToMessageId : mes.MessageId);

                    await shikiClient.ShikiLogin(code).ConfigureAwait(false);

                    await client.SendTextMessageAsync(mes.Chat.Id, $"Logged as {shikiClient.GetNickname()}", replyToMessageId : mes.MessageId).ConfigureAwait(false);

                    //shikiClient.ErrorTextEvent += new Action<string>(async errorStr => await client.SendTextMessageAsync(mes.Chat.Id, $"{errorStr}", replyToMessageId: mes.MessageId).ConfigureAwait(false));
                    Bot.animeAccounts.Add(mes.From.Id, shikiClient);
                    this.isRunning = false;
                }
                catch (Exception e)
                {
                    await client.SendTextMessageAsync(mes.Chat.Id, $"Error {e.Message} Stack={e.StackTrace}", replyToMessageId : mes.MessageId).ConfigureAwait(false);

                    this.isRunning = false;
                    return;
                }
            }
        }
Example #4
0
        public async Task GetTask(ShikimoriClient shikiClient, AnimeStatus status)
        {
            var bag = new ConcurrentBag <SpecialUserAnimeRate>();
            await shikiClient.GetAnimeFull(bag, status).ConfigureAwait(false);

            Trace.WriteLine("await shikiclient passed");
            AnimeList = bag.ToList();
            Trace.WriteLine("animeList passed");
        }
Example #5
0
        protected TestBase()
        {
            var scope        = Environment.GetEnvironmentVariable("scope");
            var access       = Environment.GetEnvironmentVariable("access_token");
            var refresh      = Environment.GetEnvironmentVariable("refresh_token");
            var name         = Environment.GetEnvironmentVariable("name");
            var clientId     = Environment.GetEnvironmentVariable("client_id");
            var clientSecret = Environment.GetEnvironmentVariable("client_secret");

            UserId = Convert.ToInt64(Environment.GetEnvironmentVariable("userId"));
            Token  = new AccessToken
            {
                Access_Token = access,
                RefreshToken = refresh,
                Scope        = scope
            };
            var logger = new NUnitLogger <TestBase>();

            Client = new ShikimoriClient(logger, new ClientSettings(name, clientId, clientSecret));
        }
Example #6
0
 public static async Task <ConcurrentBag <SpecialUserAnimeRate> > GetTaskBag(ShikimoriClient shikiClient, AnimeStatus status)
 {
     Trace.WriteLine("await shikiclient passed");
     return(await shikiClient.GetAnimeFullReturn(status).ConfigureAwait(false));
 }
Example #7
0
 public ShikimoriAttendance(ILogger <ShikimoriAttendance> logger, ShikimoriClient client)
 {
     _logger = logger;
     _client = client;
 }