diff options
| -rw-r--r-- | AleeBot/AleeBot.csproj | 4 | ||||
| -rw-r--r-- | AleeBot/Modules/About.cs | 42 | ||||
| -rw-r--r-- | AleeBot/Modules/Changelog.cs | 40 | ||||
| -rw-r--r-- | AleeBot/Modules/Git.cs | 33 | ||||
| -rw-r--r-- | AleeBot/Modules/Help.cs | 42 | ||||
| -rw-r--r-- | AleeBot/Modules/Ping.cs | 35 | ||||
| -rw-r--r-- | AleeBot/Modules/Poweroff.cs | 45 | ||||
| -rw-r--r-- | AleeBot/Modules/Uptime.cs | 39 | ||||
| -rw-r--r-- | AleeBot/Program.cs | 132 |
9 files changed, 314 insertions, 98 deletions
diff --git a/AleeBot/AleeBot.csproj b/AleeBot/AleeBot.csproj index bed2913..1c9108d 100644 --- a/AleeBot/AleeBot.csproj +++ b/AleeBot/AleeBot.csproj @@ -19,8 +19,4 @@ <PackageReference Include="Discord.Net" Version="2.0.1" /> <PackageReference Include="System.IO.FileSystem" Version="4.3.0" /> </ItemGroup> - - <ItemGroup> - <Folder Include="Modules\" /> - </ItemGroup> </Project> diff --git a/AleeBot/Modules/About.cs b/AleeBot/Modules/About.cs new file mode 100644 index 0000000..f25494d --- /dev/null +++ b/AleeBot/Modules/About.cs @@ -0,0 +1,42 @@ +/******************************************* + * + * AleeBot.NET: A Discord bot that's made in Discord.NET, .NET Core 3.0 and a revival. + * Copyright (C) 2019 AleeCorp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + * + **********************************************/ +using Discord; +using Discord.Commands; +using System; +using System.Threading.Tasks; + +namespace AleeBot.Modules +{ + public class About : ModuleBase<SocketCommandContext> + { + [Command("about")] + public async Task AboutAsync() + { + var embed = new EmbedBuilder(); + embed.WithTitle($"About AleeBot {Data.Version}"); + embed.WithColor(Color.Green); + embed.AddField("Server Information", $"Machine Name: {Environment.MachineName}\nOS Version: {Environment.OSVersion}\n"); + embed.AddField("Contributors", "Andrew (Alee14) - Original creator of AleeBot 1.0 and 2.0"); + embed.AddField("Built on", ".NET Core 3 Preview"); + embed.WithFooter("AleeCorp Copyright 2012-2019, Licensed with GPL-3.0"); + await Context.Channel.SendMessageAsync(embed: embed.Build()); + } + } +} diff --git a/AleeBot/Modules/Changelog.cs b/AleeBot/Modules/Changelog.cs new file mode 100644 index 0000000..24c0c84 --- /dev/null +++ b/AleeBot/Modules/Changelog.cs @@ -0,0 +1,40 @@ +/******************************************* + * + * AleeBot.NET: A Discord bot that's made in Discord.NET, .NET Core 3.0 and a revival. + * Copyright (C) 2019 AleeCorp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + * + **********************************************/ +using Discord; +using Discord.Commands; +using System.Threading.Tasks; + +namespace AleeBot.Modules +{ + public class Changelog : ModuleBase<SocketCommandContext> + { + [Command("changelog")] + public async Task ChangelogAsync() + { + var embed = new EmbedBuilder(); + embed.WithTitle("AleeBot Changelog"); + embed.WithColor(Color.Green); + embed.WithDescription($"Changelog for AleeBot {Data.Version}"); + embed.AddField("What's new?", "- Command handler!\n- Added a uptime command\n- Revamped the help command\n- Added a changelog command"); + embed.WithFooter("Thanks for using AleeBot!"); + await Context.Channel.SendMessageAsync(embed: embed.Build()); + } + } +} diff --git a/AleeBot/Modules/Git.cs b/AleeBot/Modules/Git.cs new file mode 100644 index 0000000..39c8d6d --- /dev/null +++ b/AleeBot/Modules/Git.cs @@ -0,0 +1,33 @@ +/******************************************* + * + * AleeBot.NET: A Discord bot that's made in Discord.NET, .NET Core 3.0 and a revival. + * Copyright (C) 2019 AleeCorp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + * + **********************************************/ +using Discord.Commands; +using System.Threading.Tasks; + +namespace AleeBot.Modules +{ + public class Git : ModuleBase<SocketCommandContext> + { + [Command("git")] + public async Task GitAsync() + { + await Context.Channel.SendMessageAsync("Feel free to contribute in the AleeBot repo by following this link!\nhttps://github.com/AleeCorp/AleeBot.NET"); + } + } +} diff --git a/AleeBot/Modules/Help.cs b/AleeBot/Modules/Help.cs new file mode 100644 index 0000000..612a4ce --- /dev/null +++ b/AleeBot/Modules/Help.cs @@ -0,0 +1,42 @@ +/******************************************* + * + * AleeBot.NET: A Discord bot that's made in Discord.NET, .NET Core 3.0 and a revival. + * Copyright (C) 2019 AleeCorp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + * + **********************************************/ +using System.Threading.Tasks; +using Discord; +using Discord.Commands; + +namespace AleeBot.Modules +{ + public class Help : ModuleBase<SocketCommandContext> + { + [Command("help")] + public async Task HelpAsync() + { + var embed = new EmbedBuilder(); + embed.WithTitle($"AleeBot.NET {Data.Version} Help."); + embed.WithDescription($"Every command you input into AleeBot is `{Data.prefix}`"); + embed.WithColor(Color.Green); + embed.AddField("Information:", "help\nping\ngit\nabout\nuptime\nchangelog"); + embed.AddField("Bot Owner Only:", "poweroff"); + embed.WithFooter("AleeCorp Copyright 2012-2019"); + embed.WithCurrentTimestamp(); + await Context.Channel.SendMessageAsync(embed: embed.Build()); + } + } +} diff --git a/AleeBot/Modules/Ping.cs b/AleeBot/Modules/Ping.cs new file mode 100644 index 0000000..c8f613f --- /dev/null +++ b/AleeBot/Modules/Ping.cs @@ -0,0 +1,35 @@ +/******************************************* + * + * AleeBot.NET: A Discord bot that's made in Discord.NET, .NET Core 3.0 and a revival. + * Copyright (C) 2019 AleeCorp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + * + **********************************************/ +using System.Threading.Tasks; +using Discord.Commands; + +namespace AleeBot.Modules +{ + public class Ping : ModuleBase<SocketCommandContext> + { + + [Command("ping")] + public async Task PingAsync() + { + await Context.Channel.SendMessageAsync($"{Context.User.Mention}, 🏓 Pong!"); + } + + } +} diff --git a/AleeBot/Modules/Poweroff.cs b/AleeBot/Modules/Poweroff.cs new file mode 100644 index 0000000..4e5f61a --- /dev/null +++ b/AleeBot/Modules/Poweroff.cs @@ -0,0 +1,45 @@ +/******************************************* + * + * AleeBot.NET: A Discord bot that's made in Discord.NET, .NET Core 3.0 and a revival. + * Copyright (C) 2019 AleeCorp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + * + **********************************************/ +using System; +using System.Threading.Tasks; +using Discord.Commands; + +namespace AleeBot.Modules +{ + public class Poweroff : ModuleBase<SocketCommandContext> + { + [Command("poweroff")] + public async Task PowerOffAsync() + { + if (Context.User.Id == 242775871059001344) + { + await Context.Channel.SendMessageAsync("⚠ AleeBot will now exit!"); + Console.WriteLine("[INFO] AleeBot is powering off..."); + Console.WriteLine("[SUCCESS] Press any key to exit..."); + Console.ReadKey(); + Environment.Exit(0); + } + else + { + await Context.Channel.SendMessageAsync($"{Context.User.Mention}, You don't have permissions to power me off..."); + } + } + } +} diff --git a/AleeBot/Modules/Uptime.cs b/AleeBot/Modules/Uptime.cs new file mode 100644 index 0000000..410d544 --- /dev/null +++ b/AleeBot/Modules/Uptime.cs @@ -0,0 +1,39 @@ +/******************************************* + * + * AleeBot.NET: A Discord bot that's made in Discord.NET, .NET Core 3.0 and a revival. + * Copyright (C) 2019 AleeCorp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + * + **********************************************/ +using Discord; +using Discord.Commands; +using System.Threading.Tasks; + +namespace AleeBot.Modules +{ + public class Uptime : ModuleBase<SocketCommandContext> + { + [Command("uptime")] + public async Task UptimeAync() + { + var embed = new EmbedBuilder(); + embed.WithTitle("AleeBot Uptime"); + embed.WithColor(Color.Green); + embed.AddField("System Uptime", "Coming Soon!"); + embed.AddField("Bot Uptime", "Coming Soon!"); + await Context.Channel.SendMessageAsync(embed: embed.Build()); + } + } +} diff --git a/AleeBot/Program.cs b/AleeBot/Program.cs index 51b7251..d307c97 100644 --- a/AleeBot/Program.cs +++ b/AleeBot/Program.cs @@ -24,23 +24,25 @@ using System.Threading.Tasks; using Discord; using Discord.WebSocket; using Discord.Commands; +using System.Reflection; namespace AleeBot { - public class Program + public class Program { public static void Main(string[] args) { Console.Title = $"AleeBot {Data.Version} Console"; Console.WriteLine("Starting AleeBot.NET"); Console.WriteLine($"Version: {Data.Version}\n"); - Console.WriteLine("Machine Name: ", Environment.MachineName); - Console.WriteLine("OS Version: ", Environment.OSVersion); + Console.WriteLine("Machine Name: " + Environment.MachineName); + Console.WriteLine("OS Version: " + Environment.OSVersion); Console.WriteLine("\n"); if (File.Exists("token.txt")) { new Program().MainAsync().GetAwaiter().GetResult(); - } else + } + else { Console.WriteLine("[ERROR] token.txt isn't found."); Environment.Exit(0); @@ -49,7 +51,6 @@ namespace AleeBot private DiscordSocketClient _client; private CommandService _commands; - private IServiceProvider _services; public async Task MainAsync() { @@ -57,15 +58,13 @@ namespace AleeBot _client = new DiscordSocketClient(); _commands = new CommandService(); - #if DEBUG _client.Log += Log; - #endif await _client.LoginAsync(TokenType.Bot, File.ReadAllText("token.txt")); await _client.StartAsync(); - await _client.SetGameAsync(name:$"AleeBot {Data.Version} | {Data.prefix}help"); - - _client.MessageReceived += Message; + await _client.SetGameAsync(name: $"AleeBot {Data.Version} | {Data.prefix}help"); + + await InstallCommandsAsync(); _client.Ready += () => { @@ -77,96 +76,41 @@ namespace AleeBot await Task.Delay(-1); } - private Task Log(LogMessage msg) + public async Task InstallCommandsAsync() { - Console.WriteLine(msg.ToString()); - return Task.CompletedTask; + _client.MessageReceived += HandleCommandAsync; + + await _commands.AddModulesAsync(assembly: Assembly.GetEntryAssembly(), + services: null); } - private async Task Message(SocketMessage message) + private async Task HandleCommandAsync(SocketMessage messageParam) { + var message = messageParam as SocketUserMessage; + if (message == null) return; - if (message.Content == Data.prefix + "help") - { - var embed = new EmbedBuilder(); - embed.WithTitle($"AleeBot.NET {Data.Version} Help."); - embed.WithDescription($"Every command you input into AleeBot is `{Data.prefix}`"); - embed.WithColor(Color.Green); - embed.AddField("Information:", "help\nping\ngit\nabout\nuptime\nchangelog"); - embed.AddField("Bot Owner Only:", "poweroff\nreboot"); - embed.WithFooter("AleeCorp Copyright 2012-2019"); - embed.WithCurrentTimestamp(); - await message.Channel.SendMessageAsync(embed: embed.Build()); - } - else if (message.Content == Data.prefix + "ping") - { - await message.Channel.SendMessageAsync($"<@{message.Author.Id}>, 🏓 Pong!"); - } - else if (message.Content == Data.prefix + "poweroff") - { - if (message.Author.Id == 242775871059001344) - { - await message.Channel.SendMessageAsync("⚠ AleeBot will now exit!"); - Console.WriteLine("[INFO] AleeBot is powering off..."); - await _client.StopAsync(); - Console.WriteLine("[SUCCESS] Press any key to exit..."); - Console.ReadKey(); - Environment.Exit(0); - } - else - { - await message.Channel.SendMessageAsync($"<@{message.Author.Id}>, You don't have permissions to power me off..."); - } - } - else if (message.Content == Data.prefix + "reboot") - { - if (message.Author.Id == 242775871059001344) - { - await message.Channel.SendMessageAsync("⚠ AleeBot will now reboot!"); - await _client.StopAsync(); - Console.WriteLine("[INFO] AleeBot is restarting..."); - await MainAsync(); - } - else - { - await message.Channel.SendMessageAsync($"<@{message.Author.Id}>, You don't have permissions to reboot me..."); - } + int argPos = 0; - } - else if (message.Content == Data.prefix + "git") - { - await message.Channel.SendMessageAsync("Feel free to contribute in the AleeBot repo by following this link!\nhttps://github.com/AleeCorp/AleeBot.NET"); - } - else if (message.Content == Data.prefix + "about") - { - var embed = new EmbedBuilder(); - embed.WithTitle($"About AleeBot {Data.Version}"); - embed.WithColor(Color.Green); - embed.AddField("Server Information", $"Machine Name: {Environment.MachineName}\nOS Version: {Environment.OSVersion}\n"); - embed.AddField("Contributors", "Andrew (Alee14) - Original creator of AleeBot 1.0 and 2.0"); - embed.AddField("Built on", ".NET Core 3 Preview"); - embed.WithFooter("AleeCorp Copyright 2012-2019, Licensed with GPL-3.0"); - await message.Channel.SendMessageAsync(embed: embed.Build()); - } - else if (message.Content == Data.prefix + "uptime") - { - var embed = new EmbedBuilder(); - embed.WithTitle("AleeBot Uptime"); - embed.WithColor(Color.Green); - embed.AddField("System Uptime", "Coming Soon!"); - embed.AddField("Bot Uptime", "Coming Soon!"); - await message.Channel.SendMessageAsync(embed: embed.Build()); - } - else if (message.Content == Data.prefix + "changelog") - { - var embed = new EmbedBuilder(); - embed.WithTitle("AleeBot Changelog"); - embed.WithColor(Color.Green); - embed.WithDescription($"Changelog for AleeBot {Data.Version}"); - embed.AddField("What's new?", "- Added Uptime\n- Changed the help command\n- Added a changelog command"); - embed.WithFooter("Thanks for using AleeBot!"); - await message.Channel.SendMessageAsync(embed: embed.Build()); - } + if (!(message.HasStringPrefix(Data.prefix, ref argPos) || + message.HasMentionPrefix(_client.CurrentUser, ref argPos)) || + message.Author.IsBot) + return; + + var context = new SocketCommandContext(_client, message); + + var result = await _commands.ExecuteAsync( + context: context, + argPos: argPos, + services: null); + } + + + + private Task Log(LogMessage msg) + { + Console.WriteLine(msg.ToString()); + return Task.CompletedTask; } } + } |
