public async Task CloseDebate()
        {
            if (!RoleCheck.HasInvestmentStaffRole((SocketGuildUser)Context.User) || !RoleCheck.HasChiefRole((SocketGuildUser)Context.User) || Context.User.Id != Context.Guild.Owner.Id)
            {
                return;
            }
            var guild        = GuildAccounts.GetAccount(Context.Guild);
            var voiceChannel = Context.Guild.GetVoiceChannel(ChannelIds.channels.debateVCID);
            var textChannel  = Context.Guild.GetTextChannel(ChannelIds.channels.debateTCID);

            if (guild.StickHolderId != 0)
            {
                var             currentHolderId = guild.StickHolderId;
                SocketGuildUser holder          = Global.Client.GetGuild(Config.bot.guildID).GetUser(currentHolderId);
                await voiceChannel.RemovePermissionOverwriteAsync(holder);

                guild.StickHolderId = 0;
                GuildAccounts.SaveAccounts();
            }
            //var currentHolderID =  guild.StickHolderId;
            var deny  = new OverwritePermissions(speak: PermValue.Deny, connect: PermValue.Deny, readMessageHistory: PermValue.Deny);
            var tDeny = new OverwritePermissions(connect: PermValue.Deny, readMessageHistory: PermValue.Deny, sendMessages: PermValue.Deny);
            await voiceChannel.AddPermissionOverwriteAsync(Context.Guild.GetRole(RoleIds.roles.guildMemberID), deny);

            await voiceChannel.AddPermissionOverwriteAsync(Context.Guild.GetRole(RoleIds.roles.townMemberID), deny);

            await textChannel.AddPermissionOverwriteAsync(Context.Guild.EveryoneRole, tDeny);

            await textChannel.AddPermissionOverwriteAsync(Context.Guild.GetRole(RoleIds.roles.guildMemberID), tDeny);

            await textChannel.AddPermissionOverwriteAsync(Context.Guild.GetRole(RoleIds.roles.townMemberID), tDeny);

            guild.DebateRunning = false;
            GuildAccounts.SaveAccounts();
        }
        public async Task GiveStick(SocketGuildUser user)
        {
            if (!RoleCheck.HasInvestmentStaffRole((SocketGuildUser)Context.User) || !RoleCheck.HasChiefRole((SocketGuildUser)Context.User) || Context.User.Id != Context.Guild.Owner.Id)
            {
                return;
            }
            var guild = GuildAccounts.GetAccount(Context.Guild);

            if (guild.DebateRunning == false)
            {
                await ReplyAsync("The debate is not running.");

                return;
            }
            var             currentHolderId = guild.StickHolderId;
            SocketGuildUser holder          = Global.Client.GetGuild(Config.bot.guildID).GetUser(currentHolderId);
            var             voiceChannel    = Context.Guild.GetVoiceChannel(ChannelIds.channels.debateVCID);
            await voiceChannel.RemovePermissionOverwriteAsync(holder);

            var allow = new OverwritePermissions(speak: PermValue.Allow, connect: PermValue.Allow, viewChannel: PermValue.Allow);
            await voiceChannel.AddPermissionOverwriteAsync(user, allow);

            guild.StickHolderId = user.Id;
            GuildAccounts.SaveAccounts();
        }
        public async Task DebateRules(SocketGuildUser user = null)
        {
            if (!RoleCheck.HasInvestmentStaffRole((SocketGuildUser)Context.User) || !RoleCheck.HasChiefRole((SocketGuildUser)Context.User) || Context.User.Id != Context.Guild.Owner.Id)
            {
                return;
            }
            var debateTC = Global.Client.GetGuild(Context.Guild.Id).GetTextChannel(ChannelIds.channels.debateTCID);
            var rules    = new EmbedBuilder();

            rules.WithTitle("**Rules for the Debate Channels!**")
            .WithDescription("The rules are for debates/meetings using the Debate Channels. This are enforced with bans from the debate channels to keep them as inviting as possible. If you have been banned please talk to the Owner about being able to rejoin through DMs.")
            .AddField("Rule 1:", "Please be respectful at all times. Debates are to be fun and enjoyable, while meetings are there to get everyone's collective input in a voice chat.")
            .AddField("Rule 2:", "This rule is a reminder, spamming the bot is against the rules.")
            .AddField("Rule 3:", "No complaining that you didn't get the speaking stick. This is distracting for everyone not only the person with the stick.")
            .AddField("Rule 4:", "No begging for the stick. Again, this is distracting for everyone not only the person with the stick.")
            .AddField("Rule 5:", "If your hogging the speaking stick, it can be removed by admin commands.")
            .AddField("Rule 6:", "Weither you have the speaking stick or not, keep both channels on topic.")
            .AddField("Rule 7:", "Do not ask for commands(if your the speaker asking how to give the stick up or to someone is one thing!) there is a `!help debate` command.")
            .AddField("Rule 8:", "**DO NOT** argue with staff members. If it is the case of power abuse please contact the leader.");
            if (user == null)
            {
                await debateTC.SendMessageAsync("", false, rules.Build());

                return;
            }
            else if (user != null)
            {
                var dm = await user.GetOrCreateDMChannelAsync();

                await dm.SendMessageAsync("", false, rules.Build());

                return;
            }
        }
        public async Task OpenDebate(string target = "guild")
        {
            if (!RoleCheck.HasInvestmentStaffRole((SocketGuildUser)Context.User) || !RoleCheck.HasChiefRole((SocketGuildUser)Context.User) || Context.User.Id != Context.Guild.Owner.Id)
            {
                return;
            }
            var vAllow       = new OverwritePermissions(speak: PermValue.Deny, connect: PermValue.Allow, readMessageHistory: PermValue.Allow);
            var vDeny        = new OverwritePermissions(speak: PermValue.Deny, connect: PermValue.Deny, readMessageHistory: PermValue.Deny);
            var tAllow       = new OverwritePermissions(connect: PermValue.Allow, readMessageHistory: PermValue.Allow, sendMessages: PermValue.Allow);
            var tDeny        = new OverwritePermissions(connect: PermValue.Deny, readMessageHistory: PermValue.Deny, sendMessages: PermValue.Deny);
            var voiceChannel = Context.Guild.GetVoiceChannel(ChannelIds.channels.debateVCID);
            var textChannel  = Context.Guild.GetTextChannel(ChannelIds.channels.debateTCID);

            if (target == "guild")
            {
                await voiceChannel.AddPermissionOverwriteAsync(Context.Guild.GetRole(RoleIds.roles.guildMemberID), vAllow);

                await textChannel.AddPermissionOverwriteAsync(Context.Guild.GetRole(RoleIds.roles.guildMemberID), tAllow);
            }
            if (target == "town")
            {
                await voiceChannel.AddPermissionOverwriteAsync(Context.Guild.GetRole(RoleIds.roles.townMemberID), vAllow);

                await textChannel.AddPermissionOverwriteAsync(Context.Guild.GetRole(RoleIds.roles.townMemberID), tAllow);
            }
            if (target == "all")
            {
                await voiceChannel.AddPermissionOverwriteAsync(Context.Guild.GetRole(RoleIds.roles.guildMemberID), vAllow);

                await textChannel.AddPermissionOverwriteAsync(Context.Guild.GetRole(RoleIds.roles.guildMemberID), tAllow);

                await voiceChannel.AddPermissionOverwriteAsync(Context.Guild.GetRole(RoleIds.roles.townMemberID), vAllow);

                await textChannel.AddPermissionOverwriteAsync(Context.Guild.GetRole(RoleIds.roles.townMemberID), tAllow);
            }
            await voiceChannel.AddPermissionOverwriteAsync(Context.Guild.GetRole(RoleIds.roles.guildMemberID), vAllow);

            await voiceChannel.AddPermissionOverwriteAsync(Context.Guild.EveryoneRole, vDeny);

            await textChannel.AddPermissionOverwriteAsync(Context.Guild.EveryoneRole, tDeny);

            var guild = GuildAccounts.GetAccount(Context.Guild);

            Console.WriteLine(guild);
            guild.StickHolderId = 0;
            guild.DebateRunning = true;
            GuildAccounts.SaveAccounts();
            await Context.Channel.SendMessageAsync("Guild stick holder id: " + guild.StickHolderId);

            await Context.Channel.SendMessageAsync("Debate running: " + guild.DebateRunning);

            GuildAccounts.SaveAccounts();
            await Context.Channel.SendMessageAsync("Both debate channels should be open.");
        }
        public async Task DebateInfo()
        {
            if (!RoleCheck.HasInvestmentStaffRole((SocketGuildUser)Context.User) || !RoleCheck.HasChiefRole((SocketGuildUser)Context.User) || Context.User.Id != Context.Guild.Owner.Id)
            {
                return;
            }
            var             guild           = GuildAccounts.GetAccount(Context.Guild);
            var             currentHolderId = guild.StickHolderId;
            SocketGuildUser holder          = Global.Client.GetGuild(Config.bot.guildID).GetUser(currentHolderId);
            var             embed           = new EmbedBuilder();

            embed.WithTitle("Current Debate Info")
            .AddField("Person holding the stick:", holder.Username + "or" + holder.Nickname)
            .AddField("ID set for who is holding the stick:", guild.StickHolderId)
            .AddField("Debate is running:", guild.DebateRunning);
            await ReplyAsync("", false, embed.Build());
        }
Esempio n. 6
0
        public async Task UnMute(IGuildUser user)
        {
            var muteLog = Global.Client.GetGuild(Config.bot.guildID).GetTextChannel(ChannelIds.channels.muteLogID);

            if (RoleCheck.HasInvestmentStaffRole((SocketGuildUser)Context.User) || RoleCheck.HasChiefRole((SocketGuildUser)Context.User) || Context.User.Id == Context.Guild.Owner.Id)
            {
                DataAccess Db = new DataAccess();
                Db.UpdateUserMute(user.Id, false);
                var dmChannel = await user.GetOrCreateDMChannelAsync();

                await dmChannel.SendMessageAsync($"{user.Mention},  you have been unmuted, please follow the rules from now on. If you feel it was from abuse of power please send a message to the Server  owner if you have not already done so.");
            }
            else
            {
                await Context.Channel.SendMessageAsync("404 Command Permission not found.");

                return;
            }
        }
Esempio n. 7
0
        public async Task AdminDmMessage(SocketGuildUser user, [Remainder] string message)
        {
            if (!RoleCheck.HasChiefRole((SocketGuildUser)Context.User) || !RoleCheck.HasInvestmentStaffRole((SocketGuildUser)Context.User))
            {
                await Context.Message.DeleteAsync();

                var sender = await Context.User.GetOrCreateDMChannelAsync();

                await sender.SendMessageAsync("You do not have the permissions to use this command!");

                return;
            }
            var target     = user;
            var messageLog = Global.Client.GetGuild(Config.bot.guildID).GetTextChannel(ChannelIds.channels.messageLogID);
            var dmChannel  = await target.GetOrCreateDMChannelAsync();

            await dmChannel.SendMessageAsync($"This is a message from the discord server saying: {message}");

            await messageLog.SendMessageAsync($"{Context.User.Mention} sent a message to {target.Mention}. Message was: {message}");
        }
Esempio n. 8
0
        public async Task Warn(SocketGuildUser user, byte rule, [Remainder] string reason)
        {
            if (RoleCheck.HasInvestmentStaffRole((SocketGuildUser)Context.User))
            {
                DataAccess       Db    = new DataAccess();
                UserAccountModel model = new UserAccountModel();
                var warnLog            = Global.Client.GetGuild(Config.bot.guildID).GetTextChannel(ChannelIds.channels.warningLogID);
                var dmChannel          = await user.GetOrCreateDMChannelAsync();

                var ruleText = Rules.Rules.GetRule(rule).RuleString;
                Db.UpdateUserWarning(user.Id, 1);
                var embed = new EmbedBuilder();
                embed.WithTitle("**Staff Warn**")
                .WithDescription($"Staff was forced to use the Staff warn command. Please use the `!Appeal Warn` command so the warn can be looked into. If possible please take screenshots if this was abuse of power. Leave rude comments and remarks out of the text/voice channels.")
                .AddField("Rule number broken:", rule)
                .AddField("Rule is:", ruleText)
                .AddField("Reason:", reason);
                await dmChannel.SendMessageAsync("", false, embed.Build());

                await warnLog.SendMessageAsync($"**Staff WARN** {Context.User.Mention} warned {user.Mention} for breaking rule: {rule}. Reason: {reason}");
            }
        }
Esempio n. 9
0
        public async Task Mute(IGuildUser user, [Remainder] string reason = "")
        {
            var muteLog = Global.Client.GetGuild(Config.bot.guildID).GetTextChannel(ChannelIds.channels.muteLogID);

            if (RoleCheck.HasInvestmentStaffRole((SocketGuildUser)Context.User) || RoleCheck.HasChiefRole((SocketGuildUser)Context.User) || Context.User.Id == Context.Guild.Owner.Id)
            {
                //var target = user as SocketGuildUser;
                if (user == Context.Guild.Owner)
                {
                    await Context.User.SendMessageAsync("You can not mute the owner.");

                    return;
                }

                if (reason == "" || reason == null || reason == " ")
                {
                    await Context.Channel.SendMessageAsync("Failed to provide reason for the command.");
                }
                DataAccess Db = new DataAccess();
                Db.UpdateUserMute(user.Id, true);

                await muteLog.SendMessageAsync($"{user.Mention} has been muted by {Context.User.Mention} for {reason}.");

                var dmChannel = await user.GetOrCreateDMChannelAsync();

                var embed = new EmbedBuilder();
                embed.WithTitle("**Staff Mute**")
                .WithDescription($"{user.Username}, this an automated message. At the momement you are muted on all channels, please read the following as to why and how to get the mute removed.")
                .AddField("Reason for the mute:", reason)
                .AddField("How to Appeal your mute:", "Please use `!Appeal mute (your message)` exectly, if you don't get a dm from the bot then you entered in the `!Appeal mute` wrong. If you feel this was abuse by a staff member please use the Appeal command and then send a DM to the server owner.");
                await dmChannel.SendMessageAsync("", false, embed.Build());
            }
            else
            {
                await Context.Channel.SendMessageAsync("404 Command Permission not found.");

                return;
            }
        }
        public async Task RemoveStick(SocketGuildUser user)
        {
            if (!RoleCheck.HasInvestmentStaffRole((SocketGuildUser)Context.User) || !RoleCheck.HasChiefRole((SocketGuildUser)Context.User) || Context.User.Id != Context.Guild.Owner.Id)
            {
                return;
            }
            var guild = GuildAccounts.GetAccount(Context.Guild);

            if (guild.DebateRunning == false)
            {
                await ReplyAsync("The debate is not running.");

                return;
            }
            var deny         = new OverwritePermissions(speak: PermValue.Deny, connect: PermValue.Allow);
            var voiceChannel = Context.Guild.GetVoiceChannel(ChannelIds.channels.debateVCID);
            await voiceChannel.RemovePermissionOverwriteAsync(user);

            var debateTC = Global.Client.GetGuild(Context.Guild.Id).GetTextChannel(ChannelIds.channels.debateTCID);

            guild.StickHolderId = 0;
            GuildAccounts.SaveAccounts();
            await debateTC.SendMessageAsync("The speaking stick is open for grabs!");
        }