コード例 #1
0
ファイル: WeebService.cs プロジェクト: rishav394/SoraBot-v2
 public async Task <TypesData> GetTypesRaw()
 {
     try
     {
         return(await _weebClient.GetTypesAsync());
     }
     catch (Exception exception)
     {
         Console.WriteLine(exception);
         return(null);
     }
 }
コード例 #2
0
ファイル: WeebService.cs プロジェクト: zumpanik/SoraBot-v2
        public async Task AddInteractions(CommandService service)
        {
            if (!this.IsAuthenticated)
            {
                return;
            }
            var types = await WeebClient.GetTypesAsync().ConfigureAwait(false);

            if (types == null || types.Types.Count == 0)
            {
                return;
            }
            await service.CreateModuleAsync("", build =>
            {
                build.Name    = "Interactions";
                build.Summary = "All available interaction commands";

                foreach (var type in types.Types)
                {
                    build.AddCommand(type, async(context, objects, serviceProvider, commandInfo) =>
                    {
                        var image = await this.WeebClient.GetRandomAsync(type, Array.Empty <string>()).ConfigureAwait(false);
                        if (image == null)
                        {
                            await context.Channel.SendMessageAsync("", embed: new EmbedBuilder()
                            {
                                Color = SoraSocketCommandModule.Red,
                                Title = $"{SoraSocketCommandModule.FAILURE_EMOJI} Failed to fetch image :/ Try another one."
                            }.Build());
                            return;
                        }

                        var eb = new EmbedBuilder()
                        {
                            Color  = SoraSocketCommandModule.Purple,
                            Footer = new EmbedFooterBuilder()
                            {
                                Text = "Powered by weeb.sh and the weeb.net wrapper"
                            },
                            ImageUrl = image.Url
                        };

                        var mentions = context.Message.MentionedUserIds
                                       .Where(id => id != context.User.Id && id != context.Client.CurrentUser.Id)
                                       .ToArray();
                        if (mentions.Length == 0)
                        {
                            await context.Channel.SendMessageAsync("", embed: eb.Build());
                            return;
                        }
                        // Otherwise create a nice title
                        var tasks = mentions
                                    .Select(async x => await context.Guild.GetUserAsync(x).ConfigureAwait(false));
                        var res = (await Task.WhenAll(tasks).ConfigureAwait(false))
                                  .Where(u => u != null)
                                  .Select(Formatter.UsernameDiscrim);
                        var title = String.Join(", ", res);
                        if (title.Length > 150)
                        {
                            title = $"{title.Remove(150)}...";
                        }

                        title = GetTitle(type, Formatter.UsernameDiscrim(context.User), title);
                        if (title != null)
                        {
                            eb.Title = title;
                        }
                        await context.Channel.SendMessageAsync("", embed: eb.Build());
                    }, builder =>
                    {
                        builder.AddParameter("users", typeof(string),
                                             parameterBuilder =>
                        {
                            parameterBuilder.IsRemainder = true;
                            parameterBuilder.IsOptional  = true;
                        });
                    });
                }
            });
        }
コード例 #3
0
 public async Task <TypesData> GetTypessAsync(bool hidden)
 {
     return(await weebClient.GetTypesAsync(hidden)); //hidden is always defaulted to false
 }