public async Task GetAnimeAsync(CommandContext ctx, [RemainingText] string name) { var animes = (await Kitsu.GetAnimeAsync(name)).Data.Take(10).ToList(); var embed = new DiscordEmbedBuilder() .WithTitle("Select anime") .WithFooter(ctx.Member.GetFullName(), ctx.Member.AvatarUrl); for (var i = 0; i < animes.Count; i++) { var a = animes[i]; embed.AddField($"[{i + 1}] {a.Attributes.Titles.En}({a.Attributes.Titles.JaJp})", $"{a.Attributes.AverageRating?.ToString() ?? "none"}"); } var index = -1; ToDelete.Add(ctx.Message); ToDelete.Add(await ctx.RespondAsync(embed: embed)); ToDelete.Add((await Interactivity.WaitForMessageAsync( x => int.TryParse(x.Content, out index) && index > 0 && index <= 10 || index == -1, TimeSpan.FromSeconds(30))).Message); if (index == -1) { return; } var anime = animes[index - 1]; embed.WithTitle($"{anime.Attributes.Titles.En}({anime.Attributes.Titles.EnJp})"); embed.ClearFields(); embed.Description = anime.Attributes.Synopsis; await ctx.RespondAsync(embed : embed); }
public void SetUp() { Program.UserSettings = Settings.Load(); _credentials = new UserPass("*****@*****.**", "MWhXDyAUQdxa"); // 182479 Assert.AreEqual(_credentials.Username, "*****@*****.**"); Assert.AreEqual(_credentials.Password, "MWhXDyAUQdxa"); _kitsu = new Kitsu(_credentials); Assert.True(_kitsu.VerifyCredentials().Result); Assert.AreEqual(_kitsu.Username, "trackrtest"); }
private async void OnOkButton(object o, EventArgs args) { UserPass cred; Api.Api api; bool res; // result of credential verification _okButton.Sensitive = false; // what type of account are we recreating? switch (_type.ActiveText) { case "MyAnimeList": case "Kitsu": if (_type.ActiveText == "MyAnimeList") { cred = new UserPass(_username.Text, _password.Text); api = new MyAnimeList(cred); } else if (_type.ActiveText == "Kitsu") { if (!_editing) { _email = _username.Text; } cred = new UserPass(_email, _password.Text); api = new Kitsu(cred); } else { throw new NotImplementedException(); } try { res = Task.Run(() => api.VerifyCredentials()).Result; } // ApiRequestException, WebException... catch (Exception e) { var ed = new MessageDialog(null, DialogFlags.DestroyWithParent, MessageType.Error, ButtonsType.OkCancel, e.InnerException?.Message ?? e.Message) { WindowPosition = WindowPosition.Center }; var ret = ed.Run(); ed.Destroy(); Debug.WriteLine("[Exception] " + (e.InnerException?.Message ?? e.Message)); Debug.WriteLineIf(e.InnerException != null, e.InnerException?.StackTrace); if (ret == (int)ResponseType.Cancel) { Respond(ResponseType.Reject); } _okButton.Sensitive = true; return; } if (res) { if (api.GetType() == typeof(Kitsu)) { Result = new Account(api.Name, api.Username, cred, ((Kitsu)api).Email); } else { Result = new Account(api.Name, api.Username, cred); } Respond(ResponseType.Accept); } else // Invalid username or password! { var ed = new MessageDialog(null, DialogFlags.DestroyWithParent, MessageType.Error, ButtonsType.OkCancel, "Invalid username or password.") { WindowPosition = WindowPosition.Center }; var ret = ed.Run(); ed.Destroy(); if (ret == (int)ResponseType.Cancel) { Respond(ResponseType.Reject); } else { _okButton.Sensitive = true; } } break; case "AniList": var pin = RequestAniListToken(); cred = new UserPass(null, pin); var account = new Account(AniList.Identifier, null, cred); api = new AniList(account); ((AniList)api).TokenExpired += Program.OnAniListTokenExpired; try { res = await api.VerifyCredentials(); } catch (Exception e) { var ed = new MessageDialog(null, DialogFlags.DestroyWithParent, MessageType.Error, ButtonsType.Ok, e.InnerException?.Message ?? e.Message) { WindowPosition = WindowPosition.Center }; ed.Run(); ed.Destroy(); Respond(ResponseType.Reject); Debug.WriteLine("[Exception] " + (e.InnerException?.Message ?? e.Message)); return; } if (res) { account.Username = api.Username; Result = account; Respond(ResponseType.Accept); } else { var ed = new MessageDialog(null, DialogFlags.DestroyWithParent, MessageType.Error, ButtonsType.Ok, "An invalid authentication pin was entered.") { WindowPosition = WindowPosition.Center }; ed.Run(); ed.Destroy(); Respond(ResponseType.Reject); } break; default: Debug.Fail($"The account type {_type.ActiveText} has not been implemented."); Respond(ResponseType.Reject); break; } }