public async Task AFKChannel([Remainder] string chanName) { IReadOnlyCollection <SocketVoiceChannel> vChans = Context.Guild.VoiceChannels; SocketVoiceChannel selectedChan = null; foreach (SocketVoiceChannel chan in vChans) { if (chan.Name.ToLower() == chanName.ToLower()) { selectedChan = chan; break; } } if (selectedChan == null) { await Context.Channel.SendMessageAsync("Voice channel does not exist! Make sure you type it out correctly!\n(not case sensitive)"); } ServerConfig config = ServerConfigs.GetConfig(Context.Guild); config.AFKChannelID = selectedChan.Id; config.AFKChannelName = selectedChan.Name; await Context.Guild.ModifyAsync(m => { m.AfkChannel = selectedChan; }); ServerConfigs.UpdateServerConfig(Context.Guild, config); await PrintEmbedMessage("AFK Channel Set", string.Format("**{0}** is now the AFK Channel!\nUsers will be sent there after **{1}mins**", selectedChan.Name, config.AFKTimeout / 60), iconUrl : config.IconURL); }
public async Task Timestamp(string text) { ServerConfig config = ServerConfigs.GetConfig(Context.Guild); if (text == null || text == "") { await Context.Channel.SendMessageAsync(string.Format("Usage: {0}timestamp <true|false>", config.Prefix)); } else { if (text.ToLower().Contains("enable") || text.ToLower().Contains("yes") || text.ToLower().Contains("on")) { text = "true"; } if (text.ToLower().Contains("disable") || text.ToLower().Contains("no") || text.ToLower().Contains("off")) { text = "false"; } } bool b = false; bool result = false; result = bool.TryParse(text, out b); if (result) { config.TimeStamp = b; } else { await Context.Channel.SendMessageAsync(string.Format("Usage: {0}timestamp <true|false>", config.Prefix)); } ServerConfigs.UpdateServerConfig(Context.Guild, config); await PrintEmbedMessage("Timestamp Configured", string.Format("Timestamp for embed set to **{0}**", text), iconUrl : config.IconURL); }
public async Task AllowAds(bool b) { ServerConfig config = ServerConfigs.GetConfig(Context.Guild); config.AllowAdvertising = b; ServerConfigs.UpdateServerConfig(Context.Guild, config); await PrintEmbedMessage("Advertising Set", string.Format("Advertising set to {0}!", b), iconUrl : config.IconURL); }
public async Task SpamMuteTime(int mins) { ServerConfig config = ServerConfigs.GetConfig(Context.Guild); config.AntiSpamTime = mins; ServerConfigs.UpdateServerConfig(Context.Guild, config); await PrintEmbedMessage("Spam Mute Time Set", string.Format("Spam mute time set to {0}!", mins), iconUrl : config.IconURL); }
public async Task SpamWarnAmt(int amt) { ServerConfig config = ServerConfigs.GetConfig(Context.Guild); config.AntiSpamWarn = amt; ServerConfigs.UpdateServerConfig(Context.Guild, config); await PrintEmbedMessage("Spam Warn Set", string.Format("Spam warnings set to {0}!", amt), iconUrl : config.IconURL); }
public async Task Verification(bool b) { ServerConfig config = ServerConfigs.GetConfig(Context.Guild); config.RequiresVerification = b; ServerConfigs.UpdateServerConfig(Context.Guild, config); await PrintEmbedMessage("Verification Set", string.Format("Verification set to {0}!", b), iconUrl : config.IconURL); }
public async Task VerifyRole(SocketRole role) { ServerConfig config = ServerConfigs.GetConfig(Context.Guild); config.VerificationRoleID = role.Id; ServerConfigs.UpdateServerConfig(Context.Guild, config); await PrintEmbedMessage("Verification Role Set", string.Format("Users will be added to the **{0}** role after verification!", role.Name), iconUrl : config.IconURL); }
public async Task Color(int red, int green, int blue) { ServerConfig config = ServerConfigs.GetConfig(Context.Guild); config.EmbedColorRed = red; config.EmbedColorGreen = green; config.EmbedColorBlue = blue; ServerConfigs.UpdateServerConfig(Context.Guild, config); await PrintEmbedMessage("Color Set", string.Format("**Red**: {0}\n**Green**: {1}\n**Blue**: {2}", red, green, blue), iconUrl : config.IconURL); }
public async Task AFKTimeout(int time) { time = time * 60; ServerConfig config = ServerConfigs.GetConfig(Context.Guild); config.AFKTimeout = time; await Context.Guild.ModifyAsync(m => { m.AfkTimeout = time; }); ServerConfigs.UpdateServerConfig(Context.Guild, config); await PrintEmbedMessage("AFK Timeout Set", string.Format("Users will be sent to {0} after **{1} minutes** of no activity!", config.AFKChannelName, config.AFKTimeout / 60), iconUrl : config.IconURL); }
public async Task FooterText([Remainder] string text) { ServerConfig config = ServerConfigs.GetConfig(Context.Guild); if (text == null || text == "") { await Context.Channel.SendMessageAsync(string.Format("Usage: {0}footer <text>\nExample: {0}footer Created By Abyscuit", config.Prefix)); } config.FooterText = text; ServerConfigs.UpdateServerConfig(Context.Guild, config); await PrintEmbedMessage("Footer Text Set", string.Format("New footer text set to:\n{0}", text), iconUrl : config.IconURL); }
public async Task Prefix(string prefix) { if (prefix == " " || prefix == "") { await Context.Channel.SendMessageAsync("Usage: prefix <char>\nExample: @ByscuitBot prefix -"); return; } ServerConfig config = ServerConfigs.GetConfig(Context.Guild); config.Prefix = prefix; ServerConfigs.UpdateServerConfig(Context.Guild, config); await PrintEmbedMessage("Prefix Set", "Prefix has been set to " + prefix + ".\nYou can now use " + prefix + "help for the list of commands.", iconUrl : config.IconURL); }
private async Task Client_MessageReceived(SocketMessage s) { var msg = s as SocketUserMessage; if (msg == null) { return; } var context = new SocketCommandContext(client, msg); ulong guildID = 0; SocketTextChannel generalchan = null; ServerConfig config = new ServerConfig(); UserAccount userAccount = null; Antispam.SpamAccount spamAccount = null; //Load Accounts UserAccounts.LoadUserAccts(); SteamAccounts.LoadUserAccts(); ServerConfigs.LoadServerConfigs(); NanoPool.LoadAccounts(); MemeLoader.LoadMemes(); Antispam.LoadSpamAccount(); GiveawayManager.LoadGiveaways(); //----------Do Tests-------- //if (!context.IsPrivate) await RepeatingTimer.UpdateAuditLog(context.Guild);] //Mute Check userAccount = UserAccounts.GetAccount(context.User); spamAccount = Antispam.GetAccount(context.User); if (oldMessage.Count > 0) { if (oldMessage[oldMessage.Count - 1].Content == s.Content) { for (int i = 0; i < oldMessage.Count; i++) { if (oldMessage[i].Content == s.Content && oldMessage[i].Embeds.Count == 0) { msgCount++; if (msgCount >= 5) { try { await s.DeleteAsync(); } catch (Exception ex) { string exMsg = DateTime.Now + " | EXCEPTION: " + ex.Message; Console.WriteLine(exMsg); Log.LogException(exMsg); } string mes = DateTime.Now + " | " + context.User + " suspected raid account. Ban request...."; Console.WriteLine(mes); } } } } } if (oldMessage.Count >= 20) { oldMessage.RemoveAt(0); } oldMessage.Add(s); if (!context.IsPrivate) { config = ServerConfigs.GetConfig(context.Guild); RepeatingTimer.channel = (SocketTextChannel)context.Channel; if (!updated.Contains(context.Guild)) { ServerConfigs.UpdateServerConfig(context.Guild, config); updated.Add(context.Guild); } if (config.RequiresVerification) { if (GetTChannel(context.Guild.TextChannels, "verification") == null) { await context.Guild.CreateTextChannelAsync("verification"); } } if (userAccount.IsMuted) { await context.Message.DeleteAsync(); return; } //Get Guild ID guildID = context.Guild.Id; DataStorage.AddPairToStorage(context.Guild.Name + "ID", guildID.ToString()); generalchan = GetTChannel(context.Guild.TextChannels, "general"); } //Bot Check if (!context.User.IsBot) { if (!context.IsPrivate) { if (!config.AllowAdvertising) { if (context.Message.Content.Contains(context.Guild.EveryoneRole.ToString()) && context.Message.Content.Contains("https://discord.gg/")) { await context.Message.DeleteAsync(); await context.Channel.SendMessageAsync(context.User.Mention + " Advertising discord servers is not allowed here."); return; } } if (config.BlockMentionEveryone) { if (context.Message.Content.Contains(context.Guild.EveryoneRole.ToString())) { await context.Message.DeleteAsync(); await context.Channel.SendMessageAsync(context.User.Mention + " mentioning everyone is prohibited!"); return; } } //Check for raid from multiple account spam //Add when you wake up... spamAccount.LastMessages.Add(DateTime.Now); if (spamAccount.BanAmount > 0) { if (Math.Abs(spamAccount.LastBan.Subtract(DateTime.Now).Days) > 10) //Reset ban amount after 10 days { spamAccount.BanAmount = 0; } } if (spamAccount.LastMessages.Count > 3) { //Get last 4 messages sent DateTime d1 = spamAccount.LastMessages[0]; DateTime d2 = spamAccount.LastMessages[1]; DateTime d3 = spamAccount.LastMessages[2]; DateTime d4 = spamAccount.LastMessages[3]; TimeSpan t1 = new TimeSpan(); TimeSpan t2 = new TimeSpan(); TimeSpan t3 = new TimeSpan(); //Subtract them from each other by Milliseconds t1 = d1.Subtract(d2); t2 = d2.Subtract(d3); t3 = d3.Subtract(d4); double mil1 = Math.Abs(t1.TotalMilliseconds); double mil2 = Math.Abs(t2.TotalMilliseconds); double mil3 = Math.Abs(t3.TotalMilliseconds); //Console.WriteLine(mil1 + "\n" + mil2 + "\n" + mil3); //If all past 4 messages are within spam threshold then its considerd spam if (mil1 <= Antispam.millisecondThreshold && //Threshold is 5 seconds mil2 <= Antispam.millisecondThreshold && mil3 <= Antispam.millisecondThreshold) { spamAccount.BanAmount++; string message = ""; DateTime banTime = DateTime.Now; if (spamAccount.BanAmount < config.AntiSpamWarn) { message = "\nPlease stop spamming you have been muted for 30 seconds!"; banTime = DateTime.Now.AddSeconds(30); } if (spamAccount.BanAmount >= config.AntiSpamWarn && spamAccount.BanAmount < config.AntiSpamThreshold) { int time = (int)config.AntiSpamTime; message = "\nYou have been muted for " + time + " Minutes! " + context.Guild.Owner.Mention; banTime = DateTime.Now.AddMinutes(time); } if (spamAccount.BanAmount > config.AntiSpamThreshold) { SocketGuildUser user = (SocketGuildUser)context.User; await user.BanAsync(1, "Spamming"); await context.Channel.SendMessageAsync(context.User.Username + " was banned for 1 day for spamming!"); return; } spamAccount.BanTime = banTime; spamAccount.LastBan = DateTime.Now; await context.Channel.SendMessageAsync(context.User.Mention + message); spamAccount.LastMessages.Clear(); Antispam.UpdateAccount(context.User, spamAccount); Antispam.SaveAccounts(); userAccount.IsMuted = true; UserAccounts.SaveAccounts(); return; } spamAccount.LastMessages.Clear(); } Antispam.SaveAccounts(); if (config.EnableServerStats) { //If stat channels dont exist await CreateStatChannels(context.Guild); await updMemberChan(context.Guild); //Update Stat channels } if (config.EnableLevelSystem) { uint oldlvl = userAccount.LevelNumber; userAccount.XP += 10; //Xp gain userAccount.Points += 10; //Pointshop if (oldlvl != userAccount.LevelNumber) { for (int i = 0; i < LevelingSytem.levelUp.Length; i++) { if (userAccount.LevelNumber == LevelingSytem.levelUp[i]) { IGuildUser user = (IGuildUser)context.User; IRole[] r = user.Guild.Roles.ToArray(); IRole addrole = null; for (int i2 = 0; i2 < r.Length; i2++) { if (r[i2].Name.ToLower() == LevelingSytem.upgradeRoles[i].ToLower()) { addrole = r[i2]; break; } } if (addrole != null) { ulong?roleID = null; foreach (ulong r2 in user.RoleIds) { if (r2 == addrole.Id) { roleID = r2; break; } }//end foreach loop if (roleID == null) { await user.AddRoleAsync(addrole); await context.Channel.SendMessageAsync("__" + user.Username + "__ earned role **" + addrole + "**!", false); } //end if roleID } //end if addrole != null } // end if level up } //end levels loop string message = "Congrats " + context.User.Mention + ", You just advanced to **Level " + userAccount.LevelNumber + "!**"; await context.Channel.SendMessageAsync(message); } //end level check } //end level system check } //end if EnableLevelSystem UserAccounts.SaveAccounts(); } //end isPrivate check int argPos = 0; if (msg.HasStringPrefix("" + config.Prefix, ref argPos) || msg.HasMentionPrefix(client.CurrentUser, ref argPos)) { if (context.IsPrivate) { config = new ServerConfig(); } else { config = ServerConfigs.GetConfig(context.Guild); } IResult result = null; result = await service.ExecuteAsync(context, argPos, null); if (!result.IsSuccess && result.Error != CommandError.UnknownCommand) { bool errorCheck = true; if (context.Message.Content.Contains("creatememe") && context.Message.Attachments.Count > 0) { if (result.ErrorReason.Contains("User not found")) { errorCheck = false; } } if (errorCheck) { string message = "Error when running this command\n**" + result.ErrorReason + "**\n\nView console for more info"; var embed = new EmbedBuilder(); embed.WithTitle("Command Error"); embed.WithDescription(message); embed.WithColor(config.EmbedColorRed, config.EmbedColorGreen, config.EmbedColorBlue); if (config.FooterText != "") { embed.WithFooter(config.FooterText); } if (config.TimeStamp) { embed.WithCurrentTimestamp(); } await context.Channel.SendMessageAsync("", false, embed.Build()); Console.WriteLine(result.ErrorReason); Console.WriteLine(result.Error); } } } GetAllVoiceChannels(context.Guild.VoiceChannels); GetAllTextChannels(context.Guild.TextChannels); }