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:
parent
8644f70b14
commit
382add19a3
13 changed files with 304 additions and 67 deletions
|
@ -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}");
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue