diff --git a/DiscoBot/299585558710190101-bdaygreet.db b/DiscoBot/299585558710190101-bdaygreet.db index b36966e..0c8ad4e 100644 Binary files a/DiscoBot/299585558710190101-bdaygreet.db and b/DiscoBot/299585558710190101-bdaygreet.db differ diff --git a/DiscoBot/bdaygreet/BDayGreet.cs b/DiscoBot/bdaygreet/BDayGreet.cs index c303133..17947f7 100644 --- a/DiscoBot/bdaygreet/BDayGreet.cs +++ b/DiscoBot/bdaygreet/BDayGreet.cs @@ -115,23 +115,25 @@ namespace DiscoBot.bdaygreet private async Task HandleBDayAddCommand(SocketMessage msg, string[] parameters) { var gauthor = guild.Users.Where(u => u.Id == msg.Author.Id).Single(); - if(!gauthor.GuildPermissions.Administrator) - { - await msg.Channel.SendMessageAsync("Sorry only administrators can add birthdays :("); - return; - } - var gchan = msg.Channel as IGuildChannel; string name = parameters[1]; string date = parameters[2]; SocketGuildUser user; - try { - var id = MentionUtils.ParseUser(name); - user = guild.Users.Where(u => u.Id == id).Single(); - } catch(Exception) + try + { + var id = MentionUtils.ParseUser(name); + user = guild.Users.Where(u => u.Id == id).Single(); + } + catch (Exception) { await msg.Channel.SendMessageAsync("I can't find user " + name + " so I can't add them."); return; } + if (gauthor.Id != user.Id && !gauthor.GuildPermissions.Administrator) + { + await msg.Channel.SendMessageAsync("Only administrators can add arbitrary birthdays. You can add your own though! :)"); + return; + } + var gchan = msg.Channel as IGuildChannel; DateTimeOffset d; try { d = DateTimeOffset.ParseExact(date,new string[] { "dd.MM.", "d.MM.", "dd.M", "d.M." }, null, DateTimeStyles.AssumeUniversal); @@ -201,13 +203,14 @@ namespace DiscoBot.bdaygreet private async Task HandleBDayDelCommand(SocketMessage msg, string[] parameters) { var gauthor = guild.Users.Where(u => u.Id == msg.Author.Id).Single(); - if (!gauthor.GuildPermissions.Administrator) + + var gchan = msg.Channel as IGuildChannel; + string tag = ((IModule)this).ConcatParameters(parameters[1..]); + if (tag != msg.Author.Username+"#"+msg.Author.DiscriminatorValue && !gauthor.GuildPermissions.Administrator) { - await msg.Channel.SendMessageAsync("Sorry only administrators can delete birthdays :("); + await msg.Channel.SendMessageAsync("Only administrators can delete arbitrary birthdays. You can delete your own..."); return; } - var gchan = msg.Channel as IGuildChannel; - string tag = ((IModule)this).ConcatParameters(parameters[1..]); try { var b = bdayGreetContext.BDays.Where(b => b.DiscordTag == tag).Single();