static public async Task LinkScoresaberWithDiscord(DiscordSocketClient discordSocketClient, SocketMessage message) { var r = new RoleAssignment(discordSocketClient); if (r.CheckIfDiscordIdIsLinked(message.Author.Id.ToString())) { await message.Channel.SendMessageAsync("", false, EmbedBuilderExtension.NullEmbed("Pog", $"Your Discord ID is already linked with your scoresaber, No worries {message.Author.Username}. If you want to unlink, type !bs unlink.").Build()); await message.Channel.SendMessageAsync("Your Discord ID is already linked with your scoresaber, No worries " + message.Author.Username); return; } else { var ScoresaberId = message.Content.Substring(9); ScoresaberId = Regex.Replace(ScoresaberId, "[^0-9]", ""); if (!ValidationExtension.IsDigitsOnly(ScoresaberId)) { await message.Channel.SendMessageAsync("Scoresaber ID is wrong"); return; } if (await ValidationExtension.IsDutch(ScoresaberId)) { var guildChannel = message.Channel as SocketGuildChannel; if (guildChannel.Guild.Id != 505485680344956928) { message.Channel.SendMessageAsync("It seems that you are Dutch and trying to link your account outside the Dutch Discord. A Dutch request needs to be validated. Consider joining the Dutch Beat Saber Discord. (https://discord.gg/cH7mTyq)"); } r.MakeRequest(message); } else { JsonExtension.InsertJsonData("../../../GlobalAccounts.txt", message.Author.Id.ToString(), ScoresaberId); await message.Channel.SendMessageAsync("", false, EmbedBuilderExtension.NullEmbed("Added user to the list", "Added " + message.Author.Id.ToString() + " with scoresaberID " + ScoresaberId + " to the global list", null, null).Build()); return; } } var moderationHelper = new GuildService(discordSocketClient, 505485680344956928); var user = message.Author; if (moderationHelper.UserHasRole(user, "Nieuwkomer")) { await moderationHelper.AddRole("Link my discord please", user); await moderationHelper.DeleteRole("Nieuwkomer", user); } }
public async Task HandleReaction(DiscordSocketClient discordSocketClient, SocketReaction reaction, ISocketMessageChannel channel, Dictionary <string, string> _reactionWatcher, Program program) { if (reaction.MessageId.ToString() == "586248421715738629") { var eventDetailChannel = (ISocketMessageChannel)discordSocketClient.GetChannel(572721078359556097); var embededMessage = (IUserMessage)await eventDetailChannel.GetMessageAsync(586248421715738629); var embedInfo = embededMessage.Embeds.First(); var guild = discordSocketClient.Guilds.FirstOrDefault(x => x.Id == (ulong)505485680344956928); var user = guild.GetUser(reaction.User.Value.Id); var embedBuilder = new EmbedBuilder { Title = embedInfo.Title, Description = embedInfo.Description + "\n" + user.Username, Footer = new EmbedFooterBuilder { Text = embedInfo.Footer.ToString() }, Color = embedInfo.Color }; await embededMessage.ModifyAsync(msg => msg.Embed = embedBuilder.Build()); } var data = JsonExtension.GetJsonData("../../../Resources/irleventdata.txt"); if (reaction.UserId != 504633036902498314 && data.Keys.Contains(reaction.MessageId.ToString())) { if (reaction.Emote.ToString() == "<:green_check:671412276594475018>") { var deelnemersMsgData = JsonExtension.ToDictionary <string[]>(data[reaction.MessageId.ToString()]); var eventDetailChannel = reaction.Channel; var msgId = deelnemersMsgData.First().Key; var embededMessage = (IUserMessage)await eventDetailChannel.GetMessageAsync(ulong.Parse(msgId)); var embedInfo = embededMessage.Embeds.First(); var user = discordSocketClient.GetUser(reaction.User.Value.Id); var embedBuilder = new EmbedBuilder { Title = embedInfo.Title, Description = embedInfo.Description + "\n" + "<@!" + user.Id + ">", Footer = new EmbedFooterBuilder { Text = embedInfo.Footer.ToString() }, Color = embedInfo.Color }; //Add permissions to see the general event channel var d = deelnemersMsgData[reaction.MessageId + "0"]; var generalChannel = discordSocketClient.GetGuild(505485680344956928) .GetChannel(ulong.Parse(d.First())); await generalChannel.AddPermissionOverwriteAsync(user, new OverwritePermissions().Modify(sendMessages: PermValue.Allow, viewChannel: PermValue.Allow, readMessageHistory: PermValue.Allow)); await embededMessage.ModifyAsync(msg => msg.Embed = embedBuilder.Build()); } else if (reaction.Emote.ToString() == "<:blue_check:671413239992549387>") { var user = discordSocketClient.GetUser(reaction.User.Value.Id); var deelnemersMsgData = JsonExtension.ToDictionary <string[]>(data[reaction.MessageId.ToString()]); var d = deelnemersMsgData[reaction.MessageId + "0"]; var generalChannel = discordSocketClient.GetGuild(505485680344956928) .GetChannel(ulong.Parse(d.First())); await generalChannel.AddPermissionOverwriteAsync(user, new OverwritePermissions().Modify(sendMessages: PermValue.Allow, viewChannel: PermValue.Allow, readMessageHistory: PermValue.Allow)); } else if (reaction.Emote.ToString() == "<:red_check:671413258468720650>") { var user = discordSocketClient.GetUser(reaction.User.Value.Id); var generalChannel = discordSocketClient.GetGuild(505485680344956928) .GetChannel(reaction.Channel.Id); await generalChannel.AddPermissionOverwriteAsync(user, new OverwritePermissions().Modify(sendMessages: PermValue.Deny, viewChannel: PermValue.Deny, readMessageHistory: PermValue.Deny)); } } if (reaction.MessageId.ToString() == "586248421715738629") { var messageID = reaction.MessageId; var userID = reaction.UserId; } if (channel.Id == 549343990957211658) { var guild = discordSocketClient.Guilds.FirstOrDefault(x => x.Id == (ulong)505485680344956928); var user = guild.GetUser(reaction.User.Value.Id); var userRoles = user.Roles; foreach (var role in userRoles) { if (role.Name == "Nieuwkomer") { var addRole = guild.Roles.FirstOrDefault(x => x.Name == "Koos Rankloos"); var deleteRole = guild.Roles.FirstOrDefault(x => x.Name == "Nieuwkomer"); await user.AddRoleAsync(addRole); await user.RemoveRoleAsync(deleteRole); } } } if (channel.Id == 549350982081970176) { bool authenticationCheck() { var guild = discordSocketClient.Guilds.FirstOrDefault(x => x.Id == (ulong)505485680344956928); var userRoles = guild.GetUser(reaction.User.Value.Id).Roles; foreach (var role in userRoles) { if (role.Name == "Staff") { return(true); } } return(false); } if (authenticationCheck()) { //{✅} //{⛔} // vinkje = status veranderen en actie uitvoeren om er in te zetten // denied is status veranderen en user mention gebruiken var messageFromReaction = await reaction.Channel.GetMessageAsync(reaction.MessageId); var casted = (IUserMessage)messageFromReaction; var usedEmbed = casted.Embeds.First(); if (reaction.Emote.Name == "⛔") { var deniedEmbed = new EmbedBuilder(); //need staff check try { deniedEmbed = new EmbedBuilder { Title = usedEmbed.Title, Description = usedEmbed.Description.Replace("Waiting for approval", "Denied"), ThumbnailUrl = usedEmbed.Thumbnail.Value.Url, Color = Color.Red }; } catch { deniedEmbed = new EmbedBuilder { Title = usedEmbed.Title, Description = usedEmbed.Description.Replace("Waiting for approval", "Denied"), Color = Color.Red }; } await casted.ModifyAsync(msg => msg.Embed = deniedEmbed.Build()); await casted.RemoveAllReactionsAsync(); } if (reaction.Emote.Name == "✅") { var digitsOnly = new Regex(@"[^\d]"); var oneSpace = new Regex("[ ]{2,}"); var IDS = oneSpace.Replace(digitsOnly.Replace(usedEmbed.Description, " "), "-").Split("-"); var discordId = IDS[2]; var scoresaberId = IDS[1]; var approvedEmbed = new EmbedBuilder(); try { approvedEmbed = new EmbedBuilder { Title = usedEmbed.Title, Description = usedEmbed.Description.Replace("Waiting for approval", "Approved"), ThumbnailUrl = usedEmbed.Thumbnail.Value.Url, Color = Color.Green }; } catch { approvedEmbed = new EmbedBuilder { Title = usedEmbed.Title, Description = usedEmbed.Description.Replace("Waiting for approval", "Approved"), Color = Color.Green }; } var check = await new RoleAssignment(discordSocketClient).LinkAccount(discordId, scoresaberId); if (check) { await casted.ModifyAsync(msg => msg.Embed = approvedEmbed.Build()); await casted.RemoveAllReactionsAsync(); } var player = await new ScoresaberAPI(scoresaberId).GetPlayerFull(); DutchRankFeed.GiveRoleWithRank(player.playerInfo.CountryRank, scoresaberId, discordSocketClient); var dutchGuild = new GuildService(discordSocketClient, 505485680344956928); var linkingUser = dutchGuild.Guild.GetUser(new RoleAssignment(discordSocketClient).GetDiscordIdWithScoresaberId(scoresaberId)); await dutchGuild.AddRole("Verified", linkingUser); await dutchGuild.DeleteRole("Link my discord please", linkingUser); await dutchGuild.DeleteRole("Koos Rankloos", linkingUser); await program.UserJoinedMessage(linkingUser); } } } //Add Roles from reactions added to specific channels if (channel.Id == 510227606822584330 || channel.Id == 627292184143724544) { var guild = discordSocketClient.GetGuild(505485680344956928); if (channel.Id == 510227606822584330) { guild = discordSocketClient.GetGuild(505485680344956928); } else if (channel.Id == 627292184143724544) { guild = discordSocketClient.GetGuild(627156958880858113); } var user = guild.GetUser(reaction.UserId); var t = reaction.Emote.ToString().Replace("<a:", "<:"); foreach (var reactionDic in _reactionWatcher) { if (reactionDic.Key == t) { var role = guild.Roles.FirstOrDefault(x => x.Name == reactionDic.Value); await(user as IGuildUser).AddRoleAsync(role); } } } if (reaction.UserId != 504633036902498314) { //Turn page from help command //right (681843066104971287) //left (681842980134584355) if (reaction.Emote.ToString() == "<:right:681843066104971287>") { var t = reaction.Message.ToString(); var message = await channel.GetMessageAsync(reaction.MessageId); var casted = (IUserMessage)message; var usedEmbed = casted.Embeds.First(); var pagenr = usedEmbed.Title.Split("[")[1].Split("]")[0]; var currentNr = int.Parse(pagenr.Split("/")[0]); var maxNr = int.Parse(pagenr.Split("/")[1]); if (currentNr >= maxNr) { return; } casted.ModifyAsync(msg => msg.Embed = Help.GetHelpList(discordSocketClient, int.Parse(pagenr.Split("/").First()))); } if (reaction.Emote.ToString() == "<:left:681842980134584355>") { var t = reaction.Message.ToString(); var message = await channel.GetMessageAsync(reaction.MessageId); var casted = (IUserMessage)message; var usedEmbed = casted.Embeds.First(); var pagenr = usedEmbed.Title.Split("[")[1].Split("]")[0]; var currentNr = int.Parse(pagenr.Split("/")[0]); if (currentNr <= 0) { return; } casted.ModifyAsync(msg => msg.Embed = Help.GetHelpList(discordSocketClient, int.Parse(pagenr.Split("/").First()) - 2)); } } }
public async Task HandleMessage(DiscordSocketClient discordSocketClient, SocketMessage message, Logger _logger, Program program) { if (message.Author.Username == "BeatSaber Bot") { return; } MessageDelete.DeleteMessageCheck(message, discordSocketClient); if (message.Content.Length <= 3) { return; } if (message.Content.Substring(0, 3).Contains("!bs")) { var messageCommand = message.Content.ToLower(); var typingState = message.Channel.EnterTypingState(new RequestOptions { Timeout = GlobalConfiguration.TypingTimeOut, }); Console.WriteLine(message.Content); if (messageCommand.Contains(" help")) { GenericCommands.Help(discordSocketClient, message); } else if (messageCommand.Contains(" rolecolor")) { DutchServerCommands.RoleColor(discordSocketClient, message); } else if (messageCommand.Contains(" topsong")) { GlobalScoresaberCommands.NewTopSong(discordSocketClient, message); } else if (messageCommand.Contains(" search")) { GlobalScoresaberCommands.NewSearch(discordSocketClient, message); } else if (messageCommand.Contains(" updateroles")) { DutchServerCommands.UpdateRoles(discordSocketClient, message); } else if (messageCommand.Contains(" linkednames")) { DutchServerCommands.LinkedNames(discordSocketClient, message); } else if (messageCommand.Contains(" notlinkednames")) { DutchServerCommands.NotLinkedNames(discordSocketClient, message); } else if (messageCommand.Contains(" recentsong")) { GlobalScoresaberCommands.NewRecentSong(discordSocketClient, message); } else if (messageCommand.Contains(" changecolor")) { DutchServerCommands.ChangeColor(discordSocketClient, message); } else if (messageCommand.Contains(" playing")) { GenericCommands.Playing(discordSocketClient, message); } else if (messageCommand.Contains(" invite")) { GenericCommands.Invite(discordSocketClient, message); } else if (messageCommand.Contains(" poll")) { GenericCommands.Poll(discordSocketClient, message); } else if (messageCommand.Contains(" compare")) { GlobalScoresaberCommands.Compare(discordSocketClient, message); } else if (messageCommand.Contains(" unlink")) { DutchServerCommands.LinkScoresaberWithDiscord(discordSocketClient, message); } else if (messageCommand.Contains(" link")) { DutchServerCommands.LinkScoresaberWithDiscord(discordSocketClient, message); } else if (messageCommand.Contains(" typing")) { GlobalScoresaberCommands.Typing(discordSocketClient, message); message.DeleteAsync(); } else if (messageCommand.Contains(" ranks")) { var builderList = await BeatSaberInfoExtension.GetRanks(); foreach (var builder in builderList) { await message.Channel.SendMessageAsync("", false, builder.Build()); } } else if (messageCommand.Contains(" senddm")) { GenericCommands.SendDM(discordSocketClient, message); } else if (messageCommand.Contains(" approvedutchuser")) { var guildUserSender = message.Author as SocketGuildUser; if (guildUserSender.IsDutchAdmin()) { var userId = message.Content.Substring(21).Replace("<@!", "").Replace(">", "").Trim(); var user = discordSocketClient.GetUser(ulong.Parse(userId)); var guildService = new GuildService(discordSocketClient, 505485680344956928); await guildService.AddRole("Koos Rankloos", user); await program.UserJoinedMessage(user); } await message.DeleteAsync(); } else if (messageCommand.Contains(" songs")) { await message.Channel.SendMessageAsync(null, false, EmbedBuilderExtension.NullEmbed("Ewh..", "This command is outdated. Blame silverhaze to remake it").Build()); //GlobalScoresaberCommands.Songs(discordSocketClient, message); } else if (messageCommand.Contains(" irlevent create")) { DutchServerCommands.IRLevent(discordSocketClient, message); } else if (messageCommand.Contains(" randomevent create")) { DutchServerCommands.RandomEvent(discordSocketClient, message); } else { var embedBuilder = EmbedBuilderExtension.NullEmbed("Oops", "There is no command like that, try something else", null, null); await message.Channel.SendMessageAsync(null, false, embedBuilder.Build()); } typingState.Dispose(); } }