private static async Task Discord_GuildMemberAdded(DSharpPlus.EventArgs.GuildMemberAddEventArgs e) { //Check if this user has any outstanding bans or mutes DiscordUserData data = BotTools.GetUserDataById(e.Member.Id); if (data.temp_banned.CheckIfActive()) { await BanTools.OnBannedMemberJoined(data, e.Guild, e.Member); return; } }
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); } } }
private static async Task Discord_MessageCreated(DSharpPlus.EventArgs.MessageCreateEventArgs e) { //Check if this a command try { string message = e.Message.Content; if (message.StartsWith(config.command_prefix[0]) && !e.Author.IsBot && e.Guild != null) { //Get the command message = message.Substring(1); int indexOfBreak = message.IndexOf(' '); if (indexOfBreak != -1) { string prefix = message.Substring(0, indexOfBreak).TrimEnd(' '); message = message.Substring(indexOfBreak).TrimStart(' '); await CommandProcessor.OnCommand(e, prefix, message); } else { await CommandProcessor.OnCommand(e, message, ""); } } } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); } if (e.Guild != null) { //Get the member data and update if needed DiscordUserData data = BotTools.GetUserDataById(e.Author.Id); string name = $"{e.Author.Username}#{e.Author.Discriminator}"; if (data.latest_name != name) { data.latest_name = name; data.Save(); } } }