-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCommandHandler.cs
More file actions
122 lines (108 loc) · 4.57 KB
/
CommandHandler.cs
File metadata and controls
122 lines (108 loc) · 4.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
using Discord.WebSocket;
using Discord.Commands;
using System.Reflection;
using System.Threading.Tasks;
using System.Threading;
using System;
using Discord;
using SlothuExtras;
using System.Diagnostics;
using System.Collections.Generic;
using System.Globalization;
using Discord.Rest;
namespace Slothu
{
class CommandHandler
{
private readonly string _prefix = "~";
private DiscordSocketClient _client;
private CommandService _service;
private DateTime _start;
public CommandHandler(DiscordSocketClient client)
{
_client = client;
new ExternalModule(_client).SetPrefix(_prefix);
CommandServiceConfig Config = new CommandServiceConfig
{
CaseSensitiveCommands = false
};
_service = new CommandService(Config);
_service.AddModulesAsync(Assembly.GetEntryAssembly());
_client.MessageReceived += HandleCommandAsync;
_client.LoggedIn += HandleLoginAsync;
_client.Ready += HandleReadyAsync;
_client.Log += HandleLog;
_client.JoinedGuild += HandleGuildJoin;
//_client.MessageReceived += MessageRecieved;
//_client.MessageDeleted += MessageDeleted;
_client.MessageUpdated += OnMessageEdit;
}
private async Task HandleGuildJoin(SocketGuild Guild)
{
ExternalModule EM = new ExternalModule(_client);
await Guild.CreateRoleAsync("Slothu", GuildPermissions.All, new Color(75, 190, 255));
string GuildDirectory = EM.CreateGuildFolder(Guild.Id);
EM.CreateInitialFiles(GuildDirectory);
EM.CreateInitialGuildFolders(GuildDirectory);
EM.WriteFile(GuildDirectory + @"\DefaultChannel", EM.GetDefaultChannel(Guild).Id.ToString());
}
private async Task HandleCommandAsync(SocketMessage s)
{
SocketUserMessage msg = s as SocketUserMessage;
if (msg == null){ return; }
if (msg.Author.IsBot) { return; }
int pos = 0;
SocketCommandContext context = new SocketCommandContext(_client, msg);
if (msg.HasMentionPrefix(_client.CurrentUser, ref pos))
{
Console.WriteLine("pinged!");
IResult res = await _service.ExecuteAsync(context, pos);
Console.WriteLine(res);
if (!res.IsSuccess && res.Error != CommandError.UnknownCommand)
{
Console.WriteLine(res.Error);
}
}
int argPos = 0;
if (msg.HasStringPrefix(_prefix, ref argPos))
{
IResult result = await _service.ExecuteAsync(context, argPos);
if (!result.IsSuccess && result.Error != CommandError.UnknownCommand)
{
Console.WriteLine(result.ErrorReason);
}
}
}
private async Task HandleLoginAsync()
{
new ExternalModule().KillAllProcesses("dotnet", Process.GetCurrentProcess().Id);
new ExternalModule().KillAllProcesses("bash", Process.GetCurrentProcess().Id);
_start = DateTime.Now;
SocketUser _owner = _client.GetUser("ShaneSloth", "6205");
IDMChannel ownerChat = await _owner.GetOrCreateDMChannelAsync();
IUserMessage message = await ownerChat.SendMessageAsync("ShaneBot has booted up!", false, null);
await ownerChat.CloseAsync();
Console.WriteLine("Successfully logged in!");
}
private async Task HandleReadyAsync()
{
RestApplication info = await _client.GetApplicationInfoAsync();
ExternalModule EM = new ExternalModule(_client);
foreach(SocketGuild guild in _client.Guilds)
{
Environment.SetEnvironmentVariable("startTime", DateTime.Now.ToString());
string FolderDirectory = EM.CreateGuildFolder(guild.Id);
EM.CreateInitialFiles(FolderDirectory);
EM.CreateInitialGuildFolders(FolderDirectory);
}
await _client.GetUser(170874510218625024).SendMessageAsync("Good day, Daddy");
await _client.SetGameAsync("Slothu on " + _client.Guilds.Count + " servers | Prefix: " + _prefix);
Thread thread = new Thread(() => EM.TimedMessageAsync());
thread.Start();
}
private async Task HandleLog(LogMessage msg) => Console.WriteLine(msg.ToString());
private async Task OnMessageEdit(Cacheable<IMessage, ulong> List, SocketMessage Message, ISocketMessageChannel Channel)
{
}
}
}