From ce24c6e783e2ec68f36e4b443eb81e4b9c43eb9f Mon Sep 17 00:00:00 2001 From: Kwoth Date: Thu, 14 Jan 2016 14:33:16 +0100 Subject: [PATCH] Added leave announce and info when bot is PMed --- NadekoBot/Modules/Administration.cs | 43 ++++++++++++++++++++++++++--- NadekoBot/Modules/Music.cs | 5 ++-- NadekoBot/NadekoBot.cs | 20 +++++++++++++- 3 files changed, 61 insertions(+), 7 deletions(-) diff --git a/NadekoBot/Modules/Administration.cs b/NadekoBot/Modules/Administration.cs index d1e1ad94..ac5c7b6b 100644 --- a/NadekoBot/Modules/Administration.cs +++ b/NadekoBot/Modules/Administration.cs @@ -298,6 +298,8 @@ namespace NadekoBot.Modules .Do(e => { NadekoBot.client.Servers.ForEach(async s => { if (s.Name == "NadekoLog" || s.Name == "Discord Bots") return; await s.Leave(); }); }); + + cgb.CreateCommand(".prune") .Parameter("num", ParameterType.Required) .Description("Prunes a number of messages from the current channel.\n**Usage**: .prune 50") @@ -353,13 +355,13 @@ namespace NadekoBot.Modules .Description("Enables or Disables anouncements on the current channel when someone joins the server.") .Do(async e => { if (e.User.Id != NadekoBot.OwnerID) return; - announcing = !announcing; + announcingGreet = !announcingGreet; - if (announcing) { + if (announcingGreet) { announceChannel = e.Channel; joinServer = e.Server; NadekoBot.client.UserJoined += Client_UserJoined; - await e.Send("Announcements enabled on this channel."); + await e.Send("Greet announcements enabled on this channel."); } else { announceChannel = null; joinServer = null; @@ -368,6 +370,25 @@ namespace NadekoBot.Modules } }); + cgb.CreateCommand(".bye") + .Description("Enables or Disables anouncements on the current channel when someone leaves the server.") + .Do(async e => { + if (e.User.Id != NadekoBot.OwnerID) return; + announcingLeave = !announcingLeave; + + if (announcingLeave) { + announceLeaveChannel = e.Channel; + leaveServer = e.Server; + NadekoBot.client.UserJoined += Client_UserJoined; + await e.Send("Leave announcements enabled on this channel."); + } else { + announceLeaveChannel = null; + leaveServer = null; + NadekoBot.client.UserLeft -= Client_UserLeft; + await e.Send("Leave announcements disabled."); + } + }); + cgb.CreateCommand(".greetmsg") .Description("Sets a new announce message. Type %user% if you want to mention the new member.\n**Usage**: .greetmsg Welcome to the server, %user%.") .Parameter("msg",ParameterType.Unparsed) @@ -380,7 +401,7 @@ namespace NadekoBot.Modules } - bool announcing = false; + bool announcingGreet = false; Channel announceChannel = null; Server joinServer = null; string announceMsg = "Welcome to the server %user%"; @@ -394,5 +415,19 @@ namespace NadekoBot.Modules } } + bool announcingLeave = false; + Channel announceLeaveChannel = null; + Server leaveServer = null; + string announceLeaveMsg = "Welcome to the server %user%"; + + private void Client_UserLeft(object sender, UserEventArgs e) { + if (e.Server != leaveServer) return; + try { + announceLeaveChannel?.Send(announceLeaveMsg.Replace("%user%", e.User.Mention)); + } catch (Exception) { + Console.WriteLine("Failed sending leave message to the specified channel."); + } + + } } } diff --git a/NadekoBot/Modules/Music.cs b/NadekoBot/Modules/Music.cs index 4dd757e0..698ca2e3 100644 --- a/NadekoBot/Modules/Music.cs +++ b/NadekoBot/Modules/Music.cs @@ -95,8 +95,9 @@ namespace NadekoBot.Modules { if (video?.Uri != "" && video.Uri != null) { SongQueue.Add(video); - if(SongQueue.Count > 1) - await e.Send("**Queued** " + video.FullName); + await e.Send("**Queued** " + video.FullName); + } else { + await e.Send("Failed to load that song."); } }); diff --git a/NadekoBot/NadekoBot.cs b/NadekoBot/NadekoBot.cs index c125b378..2063a8d0 100644 --- a/NadekoBot/NadekoBot.cs +++ b/NadekoBot/NadekoBot.cs @@ -6,8 +6,9 @@ using Parse; using Discord.Commands; using NadekoBot.Modules; using Discord.Modules; -using Discord.Legacy; using Discord.Audio; +using System.Threading.Tasks; +using System.Timers; namespace NadekoBot { @@ -63,6 +64,8 @@ namespace NadekoBot Console.WriteLine("Parse key and/or ID not found. Bot will not log."); } + //reply to personal messages + client.MessageReceived += Client_MessageReceived; //add command service var commands = client.Services.Add(commandService); @@ -93,5 +96,20 @@ namespace NadekoBot Console.WriteLine("Exiting..."); Console.ReadKey(); } + static bool repliedRecently = false; + private static async void Client_MessageReceived(object sender, MessageEventArgs e) { + if (e.Server != null) return; + if (repliedRecently = !repliedRecently) { + await e.Send("You can type `-h` or `-help` or `@MyName help` in any of the channels I am in and I will send you a message with my commands.\n Or you can find out what i do here: https://github.com/Kwoth/NadekoBot\nIf you don't want me on your server, you can simply ban me ;("); + Timer t = new Timer(); + t.Interval = 2000; + t.Start(); + t.Elapsed += (s, ev) => { + repliedRecently = !repliedRecently; + t.Stop(); + t.Dispose(); + }; + } + } } } \ No newline at end of file