1
0
Fork 1
mirror of https://github.com/TeamOctolings/Octobot.git synced 2025-05-02 12:09:53 +03:00

a ton of stuff

This commit is contained in:
l1ttleO 2021-12-10 16:25:29 +05:00
parent 8644f70b14
commit 382add19a3
Signed by: Octol1ttle
GPG key ID: B77C34313AEE1FFF
13 changed files with 304 additions and 67 deletions

View file

@ -19,23 +19,57 @@ public class EventHandler {
await _commands.AddModulesAsync(Assembly.GetEntryAssembly(), null);
}
private static async Task HandleErrors(SocketCommandContext context, IResult result) {
var channel = context.Channel;
var reason = Utils.WrapInline(result.ErrorReason);
switch (result.Error) {
case CommandError.Exception:
await channel.SendMessageAsync($"Произошла непредвиденная ошибка при выполнении команды: {reason}");
break;
case CommandError.Unsuccessful:
await channel.SendMessageAsync($"Выполнение команды завершилось неудачей: {reason}");
break;
case CommandError.MultipleMatches:
await channel.SendMessageAsync($"Обнаружены повторяющиеся типы аргументов! {reason}");
break;
case CommandError.ParseFailed:
await channel.SendMessageAsync($"Не удалось обработать команду: {reason}");
break;
case CommandError.UnknownCommand:
await channel.SendMessageAsync($"Неизвестная команда! {reason}");
break;
case CommandError.UnmetPrecondition:
await channel.SendMessageAsync($"У тебя недостаточно прав для выполнения этой команды! {reason}");
break;
case CommandError.BadArgCount:
await channel.SendMessageAsync($"Неверное количество аргументов! {reason}");
break;
case CommandError.ObjectNotFound:
await channel.SendMessageAsync($"Нету нужных аргументов! {reason}");
break;
case null:
break;
default:
throw new ArgumentException("CommandError");
}
}
[Obsolete("Stop hard-coding things!")]
private async Task ReadyEvent() {
if (_client.GetChannel(618044439939645444) is not IMessageChannel botLogChannel)
throw new ArgumentException("Invalid bot log channel");
await botLogChannel.SendMessageAsync(Utils.GetBeep() +
"Я запустился! (C#)");
await botLogChannel.SendMessageAsync($"{Utils.GetBeep()}Я запустился! (C#)");
}
private static async Task MessageDeletedEvent(Cacheable<IMessage, ulong> message, ISocketMessageChannel channel) {
private static async Task MessageDeletedEvent(Cacheable<IMessage, ulong> message,
Cacheable<IMessageChannel, ulong> channel) {
var msg = message.Value;
string toSend;
if (msg == null)
toSend = "Удалено сообщение в канале " + Utils.MentionChannel(channel.Id) + ", но я забыл что там было";
else
toSend = "Удалено сообщение от " + msg.Author.Mention + " в канале " + Utils.MentionChannel(channel.Id)
+ ": " + Utils.Wrap(msg.Content);
await Utils.GetAdminLogChannel().SendMessageAsync(toSend);
var toSend = msg == null
? "Удалено сообщение в канале {Utils.MentionChannel(channel.Id)}, но я забыл что там было"
: $"Удалено сообщение от {msg.Author.Mention} в канале " +
$"{Utils.MentionChannel(channel.Id)}: {Environment.NewLine}{Utils.Wrap(msg.Content)}";
await Utils.SilentSendAsync(Utils.GetAdminLogChannel(), toSend);
}
private async Task MessageReceivedEvent(SocketMessage messageParam) {
@ -45,7 +79,7 @@ public class EventHandler {
if ((message.MentionedUsers.Count > 3 || message.MentionedRoles.Count > 2)
&& !user.GuildPermissions.MentionEveryone)
await new BanModule().BanUser(guild, guild.GetCurrentUserAsync().Result, user, TimeSpan.Zero,
BanModule.BanUser(guild, guild.GetCurrentUserAsync().Result, user, TimeSpan.FromMilliseconds(-1),
"Более 3-ёх упоминаний в одном сообщении");
if (!(message.HasCharPrefix('!', ref argPos) || message.HasMentionPrefix(_client.CurrentUser, ref argPos)) ||
@ -54,26 +88,26 @@ public class EventHandler {
var context = new SocketCommandContext(_client, message);
await _commands.ExecuteAsync(context, argPos, null);
var result = await _commands.ExecuteAsync(context, argPos, null);
await HandleErrors(context, result);
}
private static async Task MessageUpdatedEvent(Cacheable<IMessage, ulong> messageCached, SocketMessage messageSocket,
ISocketMessageChannel channel) {
var msg = messageCached.Value;
string toSend;
if (msg == null)
toSend = "Отредактировано сообщение в канале "
+ Utils.MentionChannel(channel.Id) + ", но я забыл что там было до редактирования: "
+ Utils.Wrap(messageSocket.Content);
else
toSend = "Отредактировано сообщение от " + msg.Author.Mention + " в канале "
+ Utils.MentionChannel(channel.Id) + ": " + Utils.Wrap(msg.Content)
+ Utils.Wrap(messageSocket.Content);
await Utils.GetAdminLogChannel().SendMessageAsync(toSend);
var nl = Environment.NewLine;
var toSend = msg == null
? $"Отредактировано сообщение от {messageSocket.Author.Mention} в канале" +
$" {Utils.MentionChannel(channel.Id)}," + $" но я забыл что там было до редактирования: " +
$"{Utils.Wrap(messageSocket.Content)}"
: $"Отредактировано сообщение от {msg.Author.Mention} " +
$"в канале {Utils.MentionChannel(channel.Id)}." +
$"{nl}До:{nl}{Utils.Wrap(msg.Content)}{nl}После:{nl}{Utils.Wrap(messageSocket.Content)}";
await Utils.SilentSendAsync(Utils.GetAdminLogChannel(), toSend);
}
private static async Task UserJoinedEvent(SocketGuildUser user) {
await user.Guild.SystemChannel.SendMessageAsync(user.Mention + ", добро пожаловать на сервер "
+ user.Guild.Name);
var guild = user.Guild;
await guild.SystemChannel.SendMessageAsync($"{user.Mention}, добро пожаловать на сервер {guild.Name}");
}
}