aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlee <Alee14498@gmail.com>2019-05-10 19:26:37 -0400
committerAlee <Alee14498@gmail.com>2019-05-10 19:26:37 -0400
commitabd06509d675263bbb00ee65f0fae4fa68095326 (patch)
tree825d8cd1dddfde5f0cca01169a35e16f8ec9e93f
parent2bb9c71485c760369ce6682e7b142bdf846f15ce (diff)
downloadAleeBot.NET-abd06509d675263bbb00ee65f0fae4fa68095326.tar.gz
AleeBot.NET-abd06509d675263bbb00ee65f0fae4fa68095326.tar.bz2
AleeBot.NET-abd06509d675263bbb00ee65f0fae4fa68095326.zip
Command Handler Folks!
-rw-r--r--AleeBot/AleeBot.csproj4
-rw-r--r--AleeBot/Modules/About.cs42
-rw-r--r--AleeBot/Modules/Changelog.cs40
-rw-r--r--AleeBot/Modules/Git.cs33
-rw-r--r--AleeBot/Modules/Help.cs42
-rw-r--r--AleeBot/Modules/Ping.cs35
-rw-r--r--AleeBot/Modules/Poweroff.cs45
-rw-r--r--AleeBot/Modules/Uptime.cs39
-rw-r--r--AleeBot/Program.cs132
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;
}
}
+
}