private Task Discord_MessageCreated(DSharpPlus.EventArgs.MessageCreateEventArgs e) { if (e.Author.IsBot) { return(Task.CompletedTask); } if (Config.ChannelId > 0 && e.Channel.Id.Equals(Config.ChannelId)) { var message = e.Message.Content.ToUpper(); foreach (var dict in _linkIds) { if (dict.Value == message) { Log.Info($"Linked steamid:{dict.Key} with discord:{e.Author.Username}#{e.Author.Discriminator}"); if (AddDiscordRelation(dict.Key, $"{e.Author.Username}#{e.Author.Discriminator}").Result) { _linkIds.Remove(dict.Key); _chatmanager.SendMessageAsOther("DiscordRoleManager", "Link successful", MyFontEnum.White, dict.Key); e.Message.CreateReactionAsync(DiscordEmoji.FromName(_discord, ":heavy_check_mark:")); return(UpdatePlayerRank(dict.Key, $"{e.Author.Username}#{e.Author.Discriminator}")); } else { _chatmanager.SendMessageAsOther("DiscordRoleManager", "Link unsuccessful", MyFontEnum.Red, dict.Key); e.Message.CreateReactionAsync(DiscordEmoji.FromName(_discord, ":heavy_multiplication_x:")); } } } } return(Task.CompletedTask); }
private async Task Client_DetectSayHi(DiscordClient sender, DSharpPlus.EventArgs.MessageCreateEventArgs e) { string msg = e.Message.Content.ToLower(); if (msg.Contains("привет") && msg.Contains("скелетик")) { await e.Message.RespondAsync("https://cdn.discordapp.com/attachments/776568856167972904/836541954779119616/4a5b505b4026b6fe30376b0b79d3e108fa755e07r1-540-540_hq.gif"); return; } if (msg.Contains("вставай припадочный")) { await e.Message.RespondAsync("https://cdn.discordapp.com/attachments/776568856167972904/838014941884579880/JeRWf8iDd_4.png"); return; } if (msg.Contains("привет") && (msg.Contains("виталий") || msg.Contains("припадочный") || msg.Contains("виталя"))) { await e.Message.RespondAsync(":skull:"); return; } }
private async Task DiscordClient_MessageCreated(DSharpPlus.EventArgs.MessageCreateEventArgs e) { if (e.Author.IsCurrent) { return; } string serverId; try { await discordLock.WaitAsync(); if (!discordToServer.TryGetValue(e.Channel.Id, out serverId)) { return; } } finally { discordLock.Release(); } FactorioDiscordDataReceived?.Invoke(this, new ServerMessageEventArgs(serverId, e.Author, e.Message.Content)); }
public static async Task DownloadFileAsync(DSharpPlus.EventArgs.MessageCreateEventArgs e) { if (!isBotDUploaded) { var fileUrl = e.Message.Attachments[0].Url; var fileName = e.Message.Attachments[0].FileName; var endDirectory = Directory.GetCurrentDirectory() + @"\Files\"; using (httpClient = new HttpClient()) { using HttpResponseMessage response = await httpClient.GetAsync(fileUrl); using Stream streamToReadFrom = await response.Content.ReadAsStreamAsync(); using FileStream DestinationStream = File.Create(endDirectory + fileName.ToString()); await streamToReadFrom.CopyToAsync(DestinationStream); } await e.Message.RespondAsync("Successfully Downloaded!"); Console.WriteLine("[info] Downloaded"); } else { Console.WriteLine("[info] It's mine"); } }
public static async Task <DiscordUser> GetUserFromDiscord(DSharpPlus.EventArgs.MessageCreateEventArgs e, ArkServer server = null) { //Check if this user has roles. DiscordUserPermissionLevel perm = DiscordUserPermissionLevel.anyone; if (server != null) { //Fetch their permission level. var guild = e.Guild; if (guild != null) { var member = await guild.GetMemberAsync(e.Author.Id); CheckIfUserHasRoles(member, server.adminRoleId, server.userRoleId, out bool isAdmin, out bool isUser); if (isUser) { perm = DiscordUserPermissionLevel.user; } if (isAdmin) { perm = DiscordUserPermissionLevel.admin; } } } //Check if this user owns the bot. if (e.Author.Id == Program.ownerId) { perm = DiscordUserPermissionLevel.owner; } return(new DiscordUser(e.Author.Username, e.Author.Id, perm)); }
private async Task Client_MessageCreatedAsync(DSharpPlus.EventArgs.MessageCreateEventArgs e) { if (e.Message.Content.Contains(":foodReview:")) { VoiceNextExtension voiceNextClient = Program.Client.GetVoiceNext(); VoiceNextConnection voiceNextCon = voiceNextClient.GetConnection(e.Guild); if (voiceNextCon == null) { foreach (DiscordVoiceState vs in e.Guild.VoiceStates) { if (vs.User.Username.Equals(e.Author.Username)) { voiceNextCon = await voiceNextClient.ConnectAsync(vs.Channel); } } } if (voiceNextCon == null) { // user wasnt in a voice channel return; } else { // await PlayAudio(voiceNextCon, @"AudioFiles\foodReview.mp3"); voiceNextCon.Disconnect(); } } }
public CommandContext CreateContext(DSharpPlus.EventArgs.MessageCreateEventArgs e) { return(new CommandContext() { Message = e.Message, User = e.Author, Channel = e.Channel, Guild = e.Guild }); }
private async Task HandleQuoteAsync(DSharpPlus.EventArgs.MessageCreateEventArgs e) { JToken quote = data["quotes"][e.Message.Content]; if (quote != null) { await e.Message.RespondAsync(quote.ToString()); } }
public async Task ListBackupsDiscord(DSharpPlus.EventArgs.MessageCreateEventArgs e, string src) { var embed = Tools.GenerateEmbed("Fetching...", "", "", DSharpPlus.Entities.DiscordColor.Yellow); var msg = await e.Message.RespondAsync(embed : embed); ArkIOInterface_SavedContext context = new ArkIOInterface_SavedContext(); context.msg = msg; CreateRequest(RequestType.DirList, src, "", 0, 0, new RSN_ClientResponse(ListBackupsCallback), context); }
public static async Task UploadFile(DSharpPlus.EventArgs.MessageCreateEventArgs e) { await e.Message.RespondAsync("Second.."); var filePath = Directory.GetCurrentDirectory() + @"\made.png"; await e.Channel.SendFileAsync(filePath, "Complited"); await e.Message.RespondAsync("Good luck!"); isBotDUploaded = true; }
//Works with RCON stuff /* * public static async Task<ArkRconConnection> ConnectToRcon(string ip, ushort port, string arkPassword) * { * ArkRconConnection c = null; * bool ready = false; * var rcon = new RconClient(new System.Net.IPEndPoint(System.Net.IPAddress.Parse(ip), port), arkPassword, new RconClient.ReadyCallback((RconClient context, bool okay) => * { * ready = true; * * })); * c = new ArkRconConnection(rcon, ip, port, arkPassword); * while (ready == false) ; * c.isReady = ready; * Console.WriteLine("Sock ready"); * return c; * } * * public static async Task<ArkRconConnection> ConnectToRcon(string ip, int port, string arkPassword) * { * return await ConnectToRcon(ip, ushort.Parse(port.ToString()), arkPassword); * } * * //Class stuff * RconClient rconClient; * public bool isReady = false; * public string failMsg; * public string ip; * public ushort port; * public string arkPassword; * * public ArkRconConnection(RconClient client, string _ip, ushort _port, string _arkPassword) * { * //Main constructor. * rconClient = client; * ip = _ip; * port = _port; * arkPassword = _arkPassword; * } * * public string RunCommand(string msg) * { * //Wait to be ready * Console.WriteLine("what"); * string response = rconClient.GetResponse(msg); * Console.WriteLine(response); * return response; * }*/ public static async Task DiscordRawRconCommand(DSharpPlus.EventArgs.MessageCreateEventArgs e, DiscordUser user, ArkServer server) { if (user.permissionLevel == DiscordUserPermissionLevel.owner) { //Ok to run. await e.Message.RespondAsync(server.rconConnection.GetResponse(e.Message.Content.Substring((Program.PrefixString + "rcon ").Length))); } else { //Cannot run becasue of permission level. await e.Message.RespondAsync("ERROR - Cannot run raw command because you're not the bot owner!"); } }
public static async Task OnCommandAuthFailed(DSharpPlus.EventArgs.MessageCreateEventArgs e, RegisteredCommand command) { DiscordEmbedBuilder builder = new DiscordEmbedBuilder(); builder.Title = ":warning: Not Authorized"; builder.Description = $"Sorry, you're not allowed to use that command. You must be a {command.requiredLevel.ToString().ToLower()} to do this."; builder.Color = DiscordColor.Yellow; builder.Footer = new DiscordEmbedBuilder.EmbedFooter { Text = Program.FOOTER_TEXT }; await e.Message.RespondAsync(embed : builder.Build()); }
private Task DiscordBot_MessageCreated(DSharpPlus.EventArgs.MessageCreateEventArgs e) { if (e.Author == DiscordBot.CurrentUser) { return(Task.CompletedTask); } if (e.Channel.Id != Config.DiscordChannelID) { return(Task.CompletedTask); } TShock.Utils.Broadcast(String.Format(Config.MessageFormatDiscordToTerraria, e.Author.Username, e.Message.Content), Config.GetColor()); return(Task.CompletedTask); }
public static async Task ReturnError(DSharpPlus.EventArgs.MessageCreateEventArgs e, string title, string description) { DiscordEmbedBuilder builder = new DiscordEmbedBuilder(); builder.Title = title; builder.Description = description; builder.Color = DiscordColor.Red; builder.Footer = new DiscordEmbedBuilder.EmbedFooter { Text = Program.FOOTER_TEXT }; await e.Message.RespondAsync(embed : builder.Build()); }
public static async Task ReturnOk(DSharpPlus.EventArgs.MessageCreateEventArgs e, DiscordUser victim, DateTime time) { DiscordEmbedBuilder builder = new DiscordEmbedBuilder(); builder.Title = "User Temporarily Banned"; builder.Description = $"{victim.Username}#{victim.Discriminator} ({victim.Id}) has been banned. They will be unbanned in {BotTools.DateTimeOffsetToString(time - DateTime.UtcNow).TrimEnd(' ')}."; builder.Color = DiscordColor.Green; builder.Footer = new DiscordEmbedBuilder.EmbedFooter { Text = Program.FOOTER_TEXT }; await e.Message.RespondAsync(embed : builder.Build()); }
public static async Task ReturnOk(DSharpPlus.EventArgs.MessageCreateEventArgs e, DiscordUser victim, int strikeCount) { DiscordEmbedBuilder builder = new DiscordEmbedBuilder(); builder.Title = "User Striked"; builder.Description = $"{victim.Username}#{victim.Discriminator} ({victim.Id}) has been striked. This is strike number {strikeCount}."; builder.Color = DiscordColor.Green; builder.Footer = new DiscordEmbedBuilder.EmbedFooter { Text = Program.FOOTER_TEXT }; await e.Message.RespondAsync(embed : builder.Build()); }
private static Task Discord_MessageCreated(DSharpPlus.EventArgs.MessageCreateEventArgs e) { if (AlliancePlugin.config.DiscordChannelId == e.Channel.Id) { if (e.Author.IsBot) { ShipyardCommands.SendMessage(e.Author.Username, e.Message.Content, Color.LightGreen, 0L); } } return(Task.CompletedTask); }
public static async Task OnCmd(DSharpPlus.EventArgs.MessageCreateEventArgs e, string prefix, string content, DiscordMember member, DiscordPermissionLevel perms, DiscordUserData data) { if (content.Length == 0) { await ReturnHelp(e); return; } //Do it //Find the user DiscordUser victim = await BotTools.ParseOfflineName(content.Trim(' ')); //If not found, complain if (victim == null) { DiscordEmbedBuilder badBuilder = new DiscordEmbedBuilder(); badBuilder.Title = "User Not Found"; badBuilder.Description = $"\"{content.Trim(' ')}\" was not found. Try their ID."; badBuilder.Color = DiscordColor.Yellow; badBuilder.Footer = new DiscordEmbedBuilder.EmbedFooter { Text = Program.FOOTER_TEXT }; await e.Message.RespondAsync(embed : badBuilder.Build()); return; } //Get user DiscordUserData victimData = BotTools.GetUserDataById(victim.Id); //Set as not active victimData.temp_banned.is_applied = false; //Save victimData.Save(); //Write OK DiscordEmbedBuilder okBuilder = new DiscordEmbedBuilder(); okBuilder.Title = "User Unbanned"; okBuilder.Description = $"{victim.Username}#{victim.Discriminator} ({victim.Id}) was unbanned."; okBuilder.Color = DiscordColor.Green; okBuilder.Footer = new DiscordEmbedBuilder.EmbedFooter { Text = Program.FOOTER_TEXT }; await e.Message.RespondAsync(embed : okBuilder.Build()); }
public static async Task OnCommandExceptionFailed(DSharpPlus.EventArgs.MessageCreateEventArgs e, RegisteredCommand command, Exception ex) { DiscordEmbedBuilder builder = new DiscordEmbedBuilder(); builder.Title = ":exclamation: Command Failed"; builder.Description = $"There was an internal error while processing this command. Sorry, try again."; builder.AddField("Exception Name", ex.Message); builder.AddField("Exception Stack Trace", "```" + ex.StackTrace + "```"); builder.Color = DiscordColor.Red; builder.Footer = new DiscordEmbedBuilder.EmbedFooter { Text = Program.FOOTER_TEXT }; await e.Message.RespondAsync(embed : builder.Build()); }
public async Task BeginArkLink(DSharpPlus.EventArgs.MessageCreateEventArgs e) { //Create a random id string id = Tools.GenerateRandomString(8); var embed = Tools.GenerateEmbed("Ark Link", "", "To link your Discord account to your Ark user, type **" + id + "** into the Ark chat.", DiscordColor.Magenta); var msg = await e.Message.RespondAsync(embed : embed); PendingArkLink pal = new PendingArkLink(); pal.user = this; pal.linkPending = true; pal.randId = id; pal.msg = msg; Program.pendingArkLinks.Add(pal); }
public static async Task ReturnHelp(DSharpPlus.EventArgs.MessageCreateEventArgs e) { DiscordEmbedBuilder builder = new DiscordEmbedBuilder(); builder.Title = "Temp Ban Help"; builder.Description = $"``{{member}}, {{time}}, {{message}}``\n\nThe ban command will temporarily ban"; builder.AddField("Usage", "To temporarily ban a member, type their name followed by comma and the duration. Then, add a comma and include a message. If you would like a ban to never expire, use \"never\" as a time."); builder.AddField("Remarks", "Bans **__are not anonymous__** and your username will be included on the direct message sent to the member."); builder.AddField("Examples", $"``{Program.config.command_prefix}tempban RomanPort#0001, 2 minutes, Some message here, up to 900 characters. This user can return in 2 minutes.``\n\n``{Program.config.command_prefix}tempban RomanPort#0001, 2 days, This will strike for two days, then expire.``\n\n``{Program.config.command_prefix}tempban RomanPort#0001, 2 days 1 year, You can have more advanced timeframes here, but you cannot include commas.``"); builder.Color = DiscordColor.Grayple; builder.Footer = new DiscordEmbedBuilder.EmbedFooter { Text = Program.FOOTER_TEXT }; await e.Message.RespondAsync(embed : builder.Build()); }
public static async Task Respond(Bot bot, DSharpPlus.EventArgs.MessageCreateEventArgs args) { if (DateTime.Now.Day != _dayWhenEmotionalTitanicFluteHasBeenSent) { _emotionalTitanicFluteHasBeenSentToday = false; _dayWhenEmotionalTitanicFluteHasBeenSent = DateTime.Now.Day; } if (!_emotionalTitanicFluteHasBeenSentToday) { // Absolutely emotional Titanic flute await args.Channel.SendMessageAsync("https://www.youtube.com/watch?v=KolfEhV-KiA"); _emotionalTitanicFluteHasBeenSentToday = true; } }
static async Task OnDmMessage(DSharpPlus.EventArgs.MessageCreateEventArgs e) { //Assume this is for creation DiscordUser user = await DiscordUser.GetUserFromDiscord(e); await ArkServer.MessageSentToFinshSetup(e, user); /*//First, check if this user is in the process of creating an Ark server * ArkServer[] userCreatingServers = ArkServer.GetArkServersInSetupStageForUser(e.Author.Id); * if (userCreatingServers.Length == 1) * { * //User is creating a server. Go through with the setup of it. * await userCreatingServers[0].MessageSentDuringSetup(e); * return; * }*/ }
public async Task ListPlayersCmd(DSharpPlus.EventArgs.MessageCreateEventArgs e) { //Run the RCON command. string[] playerList = await FetchPlayerList(); string outputList = ""; foreach (string player in playerList) { outputList += player + "\r\n"; } //Generate var embed = Tools.GenerateEmbed("Player Listing", playerList.Length.ToString() + " players total", outputList, DSharpPlus.Entities.DiscordColor.Magenta); //Respond await e.Message.RespondAsync(embed : embed); }
public static async Task ReturnHelp(DSharpPlus.EventArgs.MessageCreateEventArgs e) { DiscordEmbedBuilder builder = new DiscordEmbedBuilder(); builder.Title = "Unban Help"; builder.Description = $"``{{member}}``\n\nThe command will unban this member. A message will be sent to them."; builder.AddField("Usage", "To unban a member, tag them or type in their name. Make sure to include the discriminator."); builder.AddField("Remarks", "If this user changed their username, you'll need to use their old username. This is due to limitations of Discord."); builder.AddField("Examples", $"``{Program.config.command_prefix}unban RomanPort#0001``"); builder.Color = DiscordColor.Grayple; builder.Footer = new DiscordEmbedBuilder.EmbedFooter { Text = Program.FOOTER_TEXT }; await e.Message.RespondAsync(embed : builder.Build()); }
public async Task ShowPersonalHelp(DSharpPlus.EventArgs.MessageCreateEventArgs e, ArkServer server) { string help = ""; string prefix = Program.PrefixString; help += prefix + "**help** - Shows the menu you're in right now! \r\n"; help += prefix + "**chat** - If your admin enabled it, sends a chat message to the Ark server. \r\n"; help += prefix + "**list** - Shows a playerlist of everyone on the Ark server. \r\n"; var channel = await Program.discord.GetChannelAsync(server.notificationChannel); help += "\r\nThe current notification channel for this Ark server is **" + channel.Name + "**."; //Create embed var embed = Tools.GenerateEmbed("ArkBot Help", "ArkBot by RomanPort - V0.0.0 - romanport.com", help, Program.CreateDynamicColor()); await e.Message.RespondAsync(embed : embed); }
public static async Task OnCommand(DSharpPlus.EventArgs.MessageCreateEventArgs e, string prefix, string content) { //Get Discord member and user data DiscordMember member = await e.Guild.GetMemberAsync(e.Author.Id); DiscordUserData data = BotTools.GetUserDataById(e.Author.Id); data.latest_name = $"{e.Author.Username}#{e.Author.Discriminator}"; //Identify the permission level of this member DiscordPermissionLevel perms = DiscordPermissionLevel.Default; if (member.Roles.Where(x => x.Id == Program.config.muted_role).Count() > 0) { perms = DiscordPermissionLevel.Moderator; } if (member.Roles.Where(x => x.Id == Program.config.admin_role).Count() > 0) { perms = DiscordPermissionLevel.Admin; } //Now, find a command we can use. foreach (var c in commands) { if (c.prefix.ToLower() != prefix.ToLower()) { continue; } if (c.requiredLevel > perms) { //Tell the user that they're not allowed to do that. await OnCommandAuthFailed(e, c); return; } try { await c.callback(e, prefix, content, member, perms, data); } catch (Exception ex) { //Failed! Program.LogMessage("cmd-error", ex.Message + ex.StackTrace); await OnCommandExceptionFailed(e, c, ex); } } }
public static async Task OnCmd(DSharpPlus.EventArgs.MessageCreateEventArgs e, string prefix, string content, DiscordMember member, DiscordPermissionLevel perms, DiscordUserData data) { //Create an embed with all of the commands this user has access to var cmds = CommandProcessor.commands.Where(x => x.requiredLevel <= perms); DiscordEmbedBuilder builder = new DiscordEmbedBuilder(); builder.Title = "Command Help"; builder.Description = "With any command, run it without any parameters for help."; builder.Color = DiscordColor.Grayple; builder.Footer = new DiscordEmbedBuilder.EmbedFooter { Text = Program.FOOTER_TEXT }; foreach (var c in cmds) { builder.AddField(Program.config.command_prefix + c.prefix, c.info, true); } await e.Message.RespondAsync(embed : builder.Build()); }
static async Task analyzeMessage(DSharpPlus.EventArgs.MessageCreateEventArgs message) { var channel = message.Channel; switch (message.Message.Content.ToLower()) { case "ping": await message.Message.RespondAsync("pong!"); break; default: if (true) //mention.Predict(message.Message.Content.ToLower()))//mentionedMartinB(message.Message.Content.ToLower())) { await discord.SendMessageAsync(channel, "Кто тут такой смелый?"); } break; } }
private Task Client_MessageCreated(DSharpPlus.EventArgs.MessageCreateEventArgs e) { if (BannedUser.IsBan(e.Author.Id)) { e.Message.RespondAsync("Sorry but you are banned"); return(Task.Delay(0)); } //Lua Callback var table = MoonSharp.Interpreter.DynValue.NewPrimeTable(); foreach (var item in e.Message.Content.Split(' ')) { table.Table.Append(MoonSharp.Interpreter.DynValue.NewString(item)); } Lua.Userdatas.AsayoLuaEvent.CallOnMessage(table, MoonSharp.Interpreter.UserData.Create(new Lua.Userdatas._DSharpPlus.MessageArgsObject(e))); CommandManager.Call(CommandManager.CreateContext(e));//Command manager call return(Task.Delay(0)); }