Пример #1
0
        private async Task <bool> OnConfirm(MessageInteractionContext context)
        {
            if (context.User.Id == NewMember.Id)
            {
                if (MinecraftGuildModel.TryGetGuildOfUser(NewMember.Id, out MinecraftGuild existingGuild, true))
                {
                    EmbedBuilder failure = new EmbedBuilder()
                    {
                        Title       = "Failed",
                        Color       = BotCore.ErrorColor,
                        Description = $"Already in guild \"{(existingGuild.NameAndColorFound ? existingGuild.Name : existingGuild.ChannelId.ToString())}\""
                    };
                    await context.Message.ModifyAsync(MessageProperties =>
                    {
                        MessageProperties.Embed = failure.Build();
                    });
                }
                else if (Guild != null)
                {
                    await MinecraftGuildModel.MemberJoinGuildAsync(Guild, NewMember);

                    EmbedBuilder success = new EmbedBuilder()
                    {
                        Title       = "Success",
                        Color       = Guild.DiscordColor,
                        Description = $"{NewMember.Mention} joined \"{Guild.Name}\""
                    };
                    await context.Message.ModifyAsync(MessageProperties =>
                    {
                        MessageProperties.Embed = success.Build();
                    });
                }
                return(true);
            }
Пример #2
0
        protected override async Task ExecuteGuild(IGuildCommandContext context, object argObj)
        {
            SocketGuildUser User = argObj as SocketGuildUser;

            EmbedBuilder embed = new EmbedBuilder()
            {
                Color = BotCore.EmbedColor,
                Title = "UserInfo"
            };

            if (MinecraftGuildModel.TryGetGuildOfUser(User.Id, out MinecraftGuild minecraftGuild))
            {
                embed.AddField("Minecraft Guild Membership", $"\"{minecraftGuild.Name}\", Rank `{minecraftGuild.GetMemberRank(User.Id)}`");
            }
            embed.AddField("Discriminator", string.Format("{0}#{1}", User.Username, User.Discriminator), true);
            embed.AddField("Mention", '\\' + User.Mention, true);
            embed.AddField("Discord Snowflake Id", User.Id, true);
            SocketGuildUser guildUser = User as SocketGuildUser;

            if (guildUser != null)
            {
                if (!string.IsNullOrEmpty(guildUser.Nickname))
                {
                    embed.AddField("Nickname", guildUser.Nickname, true);
                    embed.Author = new EmbedAuthorBuilder()
                    {
                        Name    = guildUser.Nickname,
                        IconUrl = User.GetAvatarUrl()
                    };
                }
                if (guildUser.JoinedAt != null)
                {
                    embed.AddField("Joined " + guildUser.Guild.Name, guildUser.JoinedAt?.ToString("r"), true);
                }
            }

            if (embed.Author == null)
            {
                embed.Author = new EmbedAuthorBuilder()
                {
                    Name    = User.Username,
                    IconUrl = User.GetAvatarUrl()
                };
            }

            embed.AddField("Joined Discord", User.CreatedAt.ToString("r"), true);

            embed.ImageUrl = User.GetAvatarUrl();
            await context.Channel.SendEmbedAsync(embed);
        }
        private static async Task Client_UserLeft(SocketGuildUser user)
        {
            if (MinecraftGuildModel.TryGetGuildOfUser(user.Id, out MinecraftGuild userGuild))
            {
                GuildRank rank = userGuild.GetMemberRank(user.Id);
                if (rank == GuildRank.Captain)
                {
                    await AdminTaskInteractiveMessage.CreateAdminTaskMessage($"Guild Captain left Server", $"Guild: `{userGuild.Name}`\nCaptain: `{user}`, Id: `{user.Id}`{(string.IsNullOrEmpty(user.Nickname) ? "" : $", Nickname: `{user.Nickname}`")}");
                }
                else
                {
                    userGuild.MemberIds.Remove(user.Id);
                    userGuild.MateIds.Remove(user.Id);
                    await MinecraftGuildModel.SaveAll();
                }
            }
            BotVarCollection guildBotVars = BotVarManager.GetGuildBotVarCollection(user.Guild.Id);

            if (guildBotVars.TryGetBotVar(Var.MinecraftBranchRoleBotVarId, out ulong minecraftBranchRole))
            {
                if (user.Roles.Any(role => { return(role.Id == minecraftBranchRole); }))
                {
                    await AdminTaskInteractiveMessage.CreateAdminTaskMessage($"Minecraft Branch Member left Server", $"Name: `{user}`, Id: `{user.Id}`{(string.IsNullOrEmpty(user.Nickname) ? "" : $", Nickname: `{user.Nickname}`")}");
                }
            }

            if (TryGetLogChannel(user.Guild, DiscordEventType.UserLeft, out SocketTextChannel channel, out EmbedBuilder embed))
            {
                embed.Title = $"{user} left";
                StringBuilder description = new StringBuilder();
                if (!string.IsNullOrEmpty(user.Nickname))
                {
                    description.AppendLine($"**Nickname**: \"{user.Nickname}\"");
                }
                if (user.Roles.Count > 1)
                {
                    description.AppendLine($"**Roles**: `{string.Join(", ", user.Roles)}`");
                }
                embed.ThumbnailUrl = user.GetDefaultAvatarUrl();
                embed.Description  = description.ToString();
                await channel.SendEmbedAsync(embed);
            }
        }
Пример #4
0
        private async Task <bool> UpdateMessage(IUserMessage message, SocketGuild guild)
        {
            bool allConfirmed = AdminConfirmed;

            foreach (bool value in ConfirmedMembers)
            {
                if (!value)
                {
                    allConfirmed = false;
                }
            }
            EmbedBuilder embed;

            if (allConfirmed)
            {
                SocketGuildUser Captain = guild.GetUser(Guild.CaptainId);

                List <SocketGuildUser> Members = new List <SocketGuildUser>();
                foreach (ulong memberId in Guild.MemberIds)
                {
                    SocketGuildUser Member = guild.GetUser(memberId);
                    if (Member != null)
                    {
                        Members.Add(Member);
                    }
                }

                if (Captain != null && Members.Count >= MinecraftGuildModel.MIN_GUILDFOUNDINGMEMBERS)
                {
                    if (await MinecraftGuildModel.CreateGuildAsync(guild, Guild.Name, Guild.Color, Captain, Members))
                    {
                        embed = new EmbedBuilder()
                        {
                            Title       = "Success",
                            Color       = Guild.DiscordColor,
                            Description = $"Guild `{Guild.Name}` has been founded!"
                        };
                    }
                    else
                    {
                        embed = new EmbedBuilder()
                        {
                            Title       = "Failure",
                            Color       = BotCore.ErrorColor,
                            Description = $"Internal Error!"
                        };
                    }
                }
                else
                {
                    embed = new EmbedBuilder()
                    {
                        Title       = "Failure",
                        Color       = BotCore.ErrorColor,
                        Description = $"Internal Error or members of the guild left the server!"
                    };
                }
            }
            else
            {
                embed = UnconfirmedEmbed(AdminConfirmed, Guild, GuildId, ConfirmedMembers);
            }
            await message.ModifyAsync(MessageProperties =>
            {
                MessageProperties.Embed = embed.Build();
            });

            return(allConfirmed);
        }