diff --git a/Boyfriend/Boyfriend.cs b/Boyfriend/Boyfriend.cs
index ec670e9..df38768 100644
--- a/Boyfriend/Boyfriend.cs
+++ b/Boyfriend/Boyfriend.cs
@@ -60,7 +60,7 @@ public static class Boyfriend {
await Client.StartAsync();
await Client.SetActivityAsync(Activity);
- new EventHandler().InitEvents();
+ EventHandler.InitEvents();
await Task.Delay(-1);
}
@@ -128,9 +128,12 @@ public static class Boyfriend {
public static SocketGuild FindGuild(ulong channel) {
if (GuildCache.ContainsKey(channel)) return GuildCache[channel];
foreach (var guild in Client.Guilds) {
- if (guild.Channels.All(x => x.Id != channel)) continue;
- GuildCache.Add(channel, guild);
- return guild;
+ // ReSharper disable once LoopCanBeConvertedToQuery
+ foreach (var x in guild.Channels)
+ if (x.Id == channel) {
+ GuildCache.Add(channel, guild);
+ return guild;
+ }
}
throw new Exception("Could not find guild by channel!");
diff --git a/Boyfriend/Boyfriend.csproj b/Boyfriend/Boyfriend.csproj
index bb143c7..a578853 100644
--- a/Boyfriend/Boyfriend.csproj
+++ b/Boyfriend/Boyfriend.csproj
@@ -24,7 +24,7 @@
-
+
diff --git a/Boyfriend/CommandProcessor.cs b/Boyfriend/CommandProcessor.cs
index bac4013..b9e4562 100644
--- a/Boyfriend/CommandProcessor.cs
+++ b/Boyfriend/CommandProcessor.cs
@@ -29,6 +29,7 @@ public sealed class CommandProcessor {
private readonly List _tasks = new();
public readonly SocketCommandContext Context;
+ private bool _serverBlacklisted;
public bool ConfigWriteScheduled = false;
@@ -56,6 +57,11 @@ public sealed class CommandProcessor {
var cleanList = Context.Message.CleanContent.Split("\n");
for (var i = 0; i < list.Length; i++) {
RunCommandOnLine(list[i], cleanList[i], regex);
+ if (_serverBlacklisted) {
+ await Context.Message.ReplyAsync(Messages.ServerBlacklisted);
+ return;
+ }
+
if (_stackedReplyMessage.Length > 0) _ = Context.Channel.TriggerTypingAsync();
var member = Boyfriend.Client.GetGuild(Context.Guild.Id)
.GetUser(Context.User.Id); // Getting an up-to-date copy
@@ -79,6 +85,10 @@ public sealed class CommandProcessor {
if (lineNoMention == line
|| !command.Aliases.Contains(lineNoMention.Trim().ToLower().Split()[0]))
continue;
+ if (Utils.IsServerBlacklisted(Context.Guild)) {
+ _serverBlacklisted = true;
+ return;
+ }
var args = line.Split().Skip(lineNoMention.StartsWith(" ") ? 2 : 1).ToArray();
var cleanArgs = cleanLine.Split().Skip(lineNoMention.StartsWith(" ") ? 2 : 1).ToArray();
diff --git a/Boyfriend/Commands/SelfBanCommand.cs b/Boyfriend/Commands/SelfBanCommand.cs
index e5b1cbe..aca49a4 100644
--- a/Boyfriend/Commands/SelfBanCommand.cs
+++ b/Boyfriend/Commands/SelfBanCommand.cs
@@ -1,7 +1,7 @@
namespace Boyfriend.Commands;
public sealed class SelfBanCommand : ICommand {
- public string[] Aliases { get; } = { "grantoverseer", "grant", "overseer", "voooo", "overseergrant", "special" };
+ public string[] Aliases { get; } = { "cavepleaselisten" };
public async Task RunAsync(CommandProcessor cmd, string[] args, string[] cleanArgs) {
await BanCommand.BanUser(cmd, cmd.Context.User, TimeSpan.FromMilliseconds(-1), "");
diff --git a/Boyfriend/EventHandler.cs b/Boyfriend/EventHandler.cs
index d4eb73e..2818ba1 100644
--- a/Boyfriend/EventHandler.cs
+++ b/Boyfriend/EventHandler.cs
@@ -1,36 +1,42 @@
-using Boyfriend.Commands;
-using Discord;
+using Discord;
using Discord.Rest;
using Discord.WebSocket;
+using Humanizer;
namespace Boyfriend;
-public sealed class EventHandler {
- private readonly DiscordSocketClient _client = Boyfriend.Client;
+public static class EventHandler {
+ private static readonly DiscordSocketClient Client = Boyfriend.Client;
+ private static bool _sendReadyMessages = true;
- public void InitEvents() {
- _client.Ready += ReadyEvent;
- _client.MessageDeleted += MessageDeletedEvent;
- _client.MessageReceived += MessageReceivedEvent;
- _client.MessageUpdated += MessageUpdatedEvent;
- _client.UserJoined += UserJoinedEvent;
- _client.GuildScheduledEventCreated += ScheduledEventCreatedEvent;
- _client.GuildScheduledEventCancelled += ScheduledEventCancelledEvent;
- _client.GuildScheduledEventStarted += ScheduledEventStartedEvent;
- _client.GuildScheduledEventCompleted += ScheduledEventCompletedEvent;
+ public static void InitEvents() {
+ Client.Ready += ReadyEvent;
+ Client.MessageDeleted += MessageDeletedEvent;
+ Client.MessageReceived += MessageReceivedEvent;
+ Client.MessageUpdated += MessageUpdatedEvent;
+ Client.UserJoined += UserJoinedEvent;
+ Client.GuildScheduledEventCreated += ScheduledEventCreatedEvent;
+ Client.GuildScheduledEventCancelled += ScheduledEventCancelledEvent;
+ Client.GuildScheduledEventStarted += ScheduledEventStartedEvent;
+ Client.GuildScheduledEventCompleted += ScheduledEventCompletedEvent;
}
- private static async Task ReadyEvent() {
+ private static Task ReadyEvent() {
+ if (!_sendReadyMessages) return Task.CompletedTask;
var i = Utils.Random.Next(3);
- foreach (var guild in Boyfriend.Client.Guilds) {
+ foreach (var guild in Client.Guilds) {
var config = Boyfriend.GetGuildConfig(guild.Id);
var channel = guild.GetTextChannel(Convert.ToUInt64(config["BotLogChannel"]));
Utils.SetCurrentLanguage(guild.Id);
- if (config["ReceiveStartupMessages"] is not "true" || channel == null) continue;
- await channel.SendMessageAsync(string.Format(Messages.Ready, Utils.GetBeep(i)));
+ if (config["ReceiveStartupMessages"] is not "true" || channel == null ||
+ Utils.IsServerBlacklisted(guild)) continue;
+ _ = channel.SendMessageAsync(string.Format(Messages.Ready, Utils.GetBeep(i)));
}
+
+ _sendReadyMessages = false;
+ return Task.CompletedTask;
}
private static async Task MessageDeletedEvent(Cacheable message,
@@ -39,6 +45,7 @@ public sealed class EventHandler {
if (msg is null or ISystemMessage || msg.Author.IsBot) return;
var guild = Boyfriend.FindGuild(channel.Value.Id);
+ if (Utils.IsServerBlacklisted(guild)) return;
Utils.SetCurrentLanguage(guild.Id);
@@ -62,13 +69,6 @@ public sealed class EventHandler {
Utils.SetCurrentLanguage(guild.Id);
- if ((message.MentionedUsers.Count > 3 || message.MentionedRoles.Count > 2) &&
- !user.GuildPermissions.MentionEveryone) {
- await BanCommand.BanUser(new CommandProcessor(message), user, TimeSpan.FromMilliseconds(-1),
- Messages.AutobanReason);
- return;
- }
-
var prev = "";
var prevFailsafe = "";
var prevs = await message.Channel.GetMessagesAsync(3).FlattenAsync();
@@ -92,20 +92,22 @@ public sealed class EventHandler {
if (msg is null or ISystemMessage || msg.CleanContent == messageSocket.CleanContent || msg.Author.IsBot) return;
- var guildId = Boyfriend.FindGuild(channel.Id).Id;
+ var guild = Boyfriend.FindGuild(channel.Id);
+ if (Utils.IsServerBlacklisted(guild)) return;
- Utils.SetCurrentLanguage(guildId);
+ Utils.SetCurrentLanguage(guild.Id);
var isLimitedSpace = msg.CleanContent.Length + messageSocket.CleanContent.Length < 1940;
await Utils.SendFeedbackAsync(
string.Format(Messages.CachedMessageEdited, Utils.MentionChannel(channel.Id),
Utils.Wrap(msg.CleanContent, isLimitedSpace), Utils.Wrap(messageSocket.CleanContent, isLimitedSpace)),
- guildId, msg.Author.Mention);
+ guild.Id, msg.Author.Mention);
}
private static async Task UserJoinedEvent(SocketGuildUser user) {
var guild = user.Guild;
+ if (Utils.IsServerBlacklisted(guild)) return;
var config = Boyfriend.GetGuildConfig(guild.Id);
if (config["SendWelcomeMessages"] is "true")
@@ -118,6 +120,7 @@ public sealed class EventHandler {
private static async Task ScheduledEventCreatedEvent(SocketGuildEvent scheduledEvent) {
var guild = scheduledEvent.Guild;
+ if (Utils.IsServerBlacklisted(guild)) return;
var eventConfig = Boyfriend.GetGuildConfig(guild.Id);
var channel = guild.GetTextChannel(Convert.ToUInt64(eventConfig["EventCreatedChannel"]));
@@ -139,6 +142,7 @@ public sealed class EventHandler {
private static async Task ScheduledEventCancelledEvent(SocketGuildEvent scheduledEvent) {
var guild = scheduledEvent.Guild;
+ if (Utils.IsServerBlacklisted(guild)) return;
var eventConfig = Boyfriend.GetGuildConfig(guild.Id);
var channel = guild.GetTextChannel(Convert.ToUInt64(eventConfig["EventCancelledChannel"]));
if (channel != null)
@@ -148,6 +152,7 @@ public sealed class EventHandler {
private static async Task ScheduledEventStartedEvent(SocketGuildEvent scheduledEvent) {
var guild = scheduledEvent.Guild;
+ if (Utils.IsServerBlacklisted(guild)) return;
var eventConfig = Boyfriend.GetGuildConfig(guild.Id);
var channel = guild.GetTextChannel(Convert.ToUInt64(eventConfig["EventStartedChannel"]));
@@ -170,10 +175,11 @@ public sealed class EventHandler {
private static async Task ScheduledEventCompletedEvent(SocketGuildEvent scheduledEvent) {
var guild = scheduledEvent.Guild;
+ if (Utils.IsServerBlacklisted(guild)) return;
var eventConfig = Boyfriend.GetGuildConfig(guild.Id);
var channel = guild.GetTextChannel(Convert.ToUInt64(eventConfig["EventCompletedChannel"]));
if (channel != null)
await channel.SendMessageAsync(string.Format(Messages.EventCompleted, Utils.Wrap(scheduledEvent.Name),
- Utils.Wrap(scheduledEvent.StartTime.Subtract(DateTimeOffset.Now).Negate().ToString())));
+ Utils.Wrap(scheduledEvent.StartTime.Subtract(DateTimeOffset.Now).Negate().Humanize())));
}
}
diff --git a/Boyfriend/Messages.Designer.cs b/Boyfriend/Messages.Designer.cs
index ad39dc1..c4ab511 100644
--- a/Boyfriend/Messages.Designer.cs
+++ b/Boyfriend/Messages.Designer.cs
@@ -248,6 +248,15 @@ namespace Boyfriend {
}
}
+ ///
+ /// Looks up a localized string similar to We do not support hate towards our fellow members. And sometimes, we are not able to ban the offender..
+ ///
+ internal static string CommandDescriptionCavepleaselisten {
+ get {
+ return ResourceManager.GetString("CommandDescriptionCavepleaselisten", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Deletes a specified amount of messages in this channel.
///
@@ -285,7 +294,7 @@ namespace Boyfriend {
}
///
- /// Looks up a localized string similar to Shows latency to Discord servers (not counting local processing time).
+ /// Looks up a localized string similar to Shows (inaccurate) latency.
///
internal static string CommandDescriptionPing {
get {
@@ -707,6 +716,15 @@ namespace Boyfriend {
}
}
+ ///
+ /// Looks up a localized string similar to This feature is unavailable because this guild is currently blacklisted..
+ ///
+ internal static string ServerBlacklisted {
+ get {
+ return ResourceManager.GetString("ServerBlacklisted", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to That setting doesn't exist!.
///
diff --git a/Boyfriend/Messages.resx b/Boyfriend/Messages.resx
index 88ab26c..cbb20ea 100644
--- a/Boyfriend/Messages.resx
+++ b/Boyfriend/Messages.resx
@@ -1,381 +1,387 @@
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 1.3
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
- PublicKeyToken=b77a5c561934e089
-
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
- PublicKeyToken=b77a5c561934e089
-
-
-
- {0}I'm ready! (C#)
-
-
- Deleted message from {0} in channel {1}: {2}
-
-
- Too many mentions in 1 message
-
-
- Edited message in channel {0}: {1} -> {2}
-
-
- {0}, welcome to {1}
-
-
- Bah!
-
-
- Bop!
-
-
- Beep!
-
-
- I do not have permission to execute this command!
-
-
- You do not have permission to execute this command!
-
-
- You were banned by {0} in guild {1} for {2}
-
-
- Punishment expired
-
-
- You specified less than {0} messages!
-
-
- You specified more than {0} messages!
-
-
- Command help:
-
-
- You were kicked by {0} in guild {1} for {2}
-
-
- ms
-
-
- Member is already muted!
-
-
- Not specified
-
-
- Not specified
-
-
- Current settings:
-
-
- Language
-
-
- Prefix
-
-
- Remove roles on mute
-
-
- Send welcome messages
-
-
- Starter role
-
-
- Mute role
-
-
- Admin log channel
-
-
- Bot log channel
-
-
- Language not supported!
-
-
- Yes
-
-
- No
-
-
- This user is not banned!
-
-
- Member not muted!
-
-
- Someone removed the mute role manually! I added back all roles that I removed during the mute
-
-
- Welcome message
-
-
- You need to specify an integer from {0} to {1} instead of {2}!
-
-
- Banned {0} for{1}: {2}
-
-
- The specified user is not a member of this server!
-
-
- That setting doesn't exist!
-
-
- Receive startup messages
-
-
- Invalid setting value specified!
-
-
- This role does not exist!
-
-
- This channel does not exist!
-
-
- I couldn't remove role {0} because of an error! {1}
-
-
- I cannot mute someone for more than 28 days using timeouts! Either specify a duration shorter than 28 days, or set a mute role in settings
-
-
- I cannot use time-outs on other bots! Try to set a mute role in settings
-
-
- {1}{2} created event {3}! It will take place in {4} and will start <t:{5}:R>!{0}{6}
-
-
- Role for event creation notifications
-
-
- Channel for event creation notifications
-
-
- Channel for event start notifications
-
-
- Event start notifications receivers
-
-
- {0}Event {1} is starting at {2}!
-
-
- :(
-
-
- Event {0} is cancelled!{1}
-
-
- Channel for event cancellation notifications
-
-
- Channel for event completion notifications
-
-
- Event {0} has completed! Duration: {1}
-
-
- *[{0}: {1}]*
-
-
- ever
-
-
- Deleted {0} messages in {1}
-
-
- Kicked {0}: {1}
-
-
- Muted {0} for{1}: {2}
-
-
- Unbanned {0}: {1}
-
-
- Unmuted {0}: {1}
-
-
- Nothing changed! `{0}` is already set to {1}
-
-
- Not specified
-
-
- Value of setting `{0}` is now set to {1}
-
-
- Bans a user
-
-
- Deletes a specified amount of messages in this channel
-
-
- Shows this message
-
-
- Kicks a member
-
-
- Mutes a member
-
-
- Shows latency to Discord servers (not counting local processing time)
-
-
- Allows you to change certain preferences for this guild
-
-
- Unbans a user
-
-
- Unmutes a member
-
-
- You need to specify an integer from {0} to {1}!
-
-
- You need to specify a user!
-
-
- You need to specify a user instead of {0}!
-
-
- You need to specify a guild member!
-
-
- You need to specify a guild member instead of {0}!
-
-
- You cannot ban users from this guild!
-
-
- You cannot manage messages in this guild!
-
-
- You cannot kick members from this guild!
-
-
- You cannot moderate members in this guild!
-
-
- You cannot manage this guild!
-
-
- I cannot ban users from this guild!
-
-
- I cannot manage messages in this guild!
-
-
- I cannot kick members from this guild!
-
-
- I cannot moderate members in this guild!
-
-
- I cannot manage this guild!
-
-
- You need to specify a reason to ban this user!
-
-
- You need to specify a reason to kick this member!
-
-
- You need to specify a reason to mute this member!
-
-
- You need to specify a reason to unban this user!
-
-
- You need to specify a reason for unmute this member!
-
-
- You need to specify a setting to change!
-
-
- You cannot ban the owner of this guild!
-
-
- You cannot ban yourself!
-
-
- You cannot ban me!
-
-
- I cannot ban this user!
-
-
- You cannot ban this user!
-
-
- You cannot kick the owner of this guild!
-
-
- You cannot kick yourself!
-
-
- You cannot kick me!
-
-
- I cannot kick this member!
-
-
- You cannot kick this member!
-
-
- You cannot mute the owner of this guild!
-
-
- You cannot mute yourself!
-
-
- You cannot mute me!
-
-
- I cannot mute this member!
-
-
- You cannot mute this member!
-
-
- You don't need to unmute the owner of this guild!
-
-
- You are muted!
-
-
- ...
-
-
- I cannot unmute this member!
-
-
- You cannot unmute this user!
-
-
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
+ PublicKeyToken=b77a5c561934e089
+
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
+ PublicKeyToken=b77a5c561934e089
+
+
+
+ {0}I'm ready! (C#)
+
+
+ Deleted message from {0} in channel {1}: {2}
+
+
+ Too many mentions in 1 message
+
+
+ Edited message in channel {0}: {1} -> {2}
+
+
+ {0}, welcome to {1}
+
+
+ Bah!
+
+
+ Bop!
+
+
+ Beep!
+
+
+ I do not have permission to execute this command!
+
+
+ You do not have permission to execute this command!
+
+
+ You were banned by {0} in guild {1} for {2}
+
+
+ Punishment expired
+
+
+ You specified less than {0} messages!
+
+
+ You specified more than {0} messages!
+
+
+ Command help:
+
+
+ You were kicked by {0} in guild {1} for {2}
+
+
+ ms
+
+
+ Member is already muted!
+
+
+ Not specified
+
+
+ Not specified
+
+
+ Current settings:
+
+
+ Language
+
+
+ Prefix
+
+
+ Remove roles on mute
+
+
+ Send welcome messages
+
+
+ Starter role
+
+
+ Mute role
+
+
+ Admin log channel
+
+
+ Bot log channel
+
+
+ Language not supported!
+
+
+ Yes
+
+
+ No
+
+
+ This user is not banned!
+
+
+ Member not muted!
+
+
+ Someone removed the mute role manually! I added back all roles that I removed during the mute
+
+
+ Welcome message
+
+
+ You need to specify an integer from {0} to {1} instead of {2}!
+
+
+ Banned {0} for{1}: {2}
+
+
+ The specified user is not a member of this server!
+
+
+ That setting doesn't exist!
+
+
+ Receive startup messages
+
+
+ Invalid setting value specified!
+
+
+ This role does not exist!
+
+
+ This channel does not exist!
+
+
+ I couldn't remove role {0} because of an error! {1}
+
+
+ I cannot mute someone for more than 28 days using timeouts! Either specify a duration shorter than 28 days, or set a mute role in settings
+
+
+ I cannot use time-outs on other bots! Try to set a mute role in settings
+
+
+ {1}{2} created event {3}! It will take place in {4} and will start <t:{5}:R>!{0}{6}
+
+
+ Role for event creation notifications
+
+
+ Channel for event creation notifications
+
+
+ Channel for event start notifications
+
+
+ Event start notifications receivers
+
+
+ {0}Event {1} is starting at {2}!
+
+
+ :(
+
+
+ Event {0} is cancelled!{1}
+
+
+ Channel for event cancellation notifications
+
+
+ Channel for event completion notifications
+
+
+ Event {0} has completed! Duration: {1}
+
+
+ *[{0}: {1}]*
+
+
+ ever
+
+
+ Deleted {0} messages in {1}
+
+
+ Kicked {0}: {1}
+
+
+ Muted {0} for{1}: {2}
+
+
+ Unbanned {0}: {1}
+
+
+ Unmuted {0}: {1}
+
+
+ Nothing changed! `{0}` is already set to {1}
+
+
+ Not specified
+
+
+ Value of setting `{0}` is now set to {1}
+
+
+ Bans a user
+
+
+ Deletes a specified amount of messages in this channel
+
+
+ Shows this message
+
+
+ Kicks a member
+
+
+ Mutes a member
+
+
+ Shows (inaccurate) latency
+
+
+ Allows you to change certain preferences for this guild
+
+
+ Unbans a user
+
+
+ Unmutes a member
+
+
+ You need to specify an integer from {0} to {1}!
+
+
+ You need to specify a user!
+
+
+ You need to specify a user instead of {0}!
+
+
+ You need to specify a guild member!
+
+
+ You need to specify a guild member instead of {0}!
+
+
+ You cannot ban users from this guild!
+
+
+ You cannot manage messages in this guild!
+
+
+ You cannot kick members from this guild!
+
+
+ You cannot moderate members in this guild!
+
+
+ You cannot manage this guild!
+
+
+ I cannot ban users from this guild!
+
+
+ I cannot manage messages in this guild!
+
+
+ I cannot kick members from this guild!
+
+
+ I cannot moderate members in this guild!
+
+
+ I cannot manage this guild!
+
+
+ You need to specify a reason to ban this user!
+
+
+ You need to specify a reason to kick this member!
+
+
+ You need to specify a reason to mute this member!
+
+
+ You need to specify a reason to unban this user!
+
+
+ You need to specify a reason for unmute this member!
+
+
+ You need to specify a setting to change!
+
+
+ You cannot ban the owner of this guild!
+
+
+ You cannot ban yourself!
+
+
+ You cannot ban me!
+
+
+ I cannot ban this user!
+
+
+ You cannot ban this user!
+
+
+ You cannot kick the owner of this guild!
+
+
+ You cannot kick yourself!
+
+
+ You cannot kick me!
+
+
+ I cannot kick this member!
+
+
+ You cannot kick this member!
+
+
+ You cannot mute the owner of this guild!
+
+
+ You cannot mute yourself!
+
+
+ You cannot mute me!
+
+
+ I cannot mute this member!
+
+
+ You cannot mute this member!
+
+
+ You don't need to unmute the owner of this guild!
+
+
+ You are muted!
+
+
+ ...
+
+
+ I cannot unmute this member!
+
+
+ You cannot unmute this user!
+
+
+ We do not support hate towards our fellow members. And sometimes, we are not able to ban the offender.
+
+
+ This feature is unavailable because this guild is currently blacklisted.
+
+
diff --git a/Boyfriend/Messages.ru.resx b/Boyfriend/Messages.ru.resx
index 78359d6..7fa1a22 100644
--- a/Boyfriend/Messages.ru.resx
+++ b/Boyfriend/Messages.ru.resx
@@ -1,372 +1,378 @@
-
-
- text/microsoft-resx
-
-
- 1.3
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
- PublicKeyToken=b77a5c561934e089
-
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
- PublicKeyToken=b77a5c561934e089
-
-
-
- {0}Я запустился! (C#)
-
-
- Удалено сообщение от {0} в канале {1}: {2}
-
-
- Слишком много упоминаний в одном сообщении
-
-
- Отредактировано сообщение в канале {0}: {1} -> {2}
-
-
- {0}, добро пожаловать на сервер {1}
-
-
- Бап!
-
-
- Боп!
-
-
- Бип!
-
-
- У меня недостаточно прав для выполнения этой команды!
-
-
- У тебя недостаточно прав для выполнения этой команды!
-
-
- Тебя забанил {0} на сервере {1} за {2}
-
-
- Время наказания истекло
-
-
- Указано менее {0} сообщений!
-
-
- Указано более {0} сообщений!
-
-
- Справка по командам:
-
-
- Тебя кикнул {0} на сервере {1} за {2}
-
-
- мс
-
-
- Участник уже заглушен!
-
-
- Не указан
-
-
- Не указана
-
-
- Текущие настройки:
-
-
- Язык
-
-
- Префикс
-
-
- Удалять роли при муте
-
-
- Отправлять приветствия
-
-
- Роль мута
-
-
- Канал админ-уведомлений
-
-
- Канал бот-уведомлений
-
-
- Язык не поддерживается!
-
-
- Да
-
-
- Нет
-
-
- Этот пользователь не забанен!
-
-
- Участник не заглушен!
-
-
- Кто-то убрал роль мута самостоятельно! Я вернул все роли, которые забрал при муте
-
-
- Приветствие
-
-
- Надо указать целое число от {0} до {1} вместо {2}!
-
-
- Забанен {0} на{1}: {2}
-
-
- Указанный пользователь не является участником этого сервера!
-
-
- Такая настройка не существует!
-
-
- Получать сообщения о запуске
-
-
- Указано недействительное значение для настройки!
-
-
- Эта роль не существует!
-
-
- Этот канал не существует!
-
-
- Я не смог забрать роль {0} в связи с ошибкой! {1}
-
-
- Я не могу заглушить кого-то на более чем 28 дней, используя тайм-ауты! Или укажи продолжительность менее 28 дней, или установи роль мута в настройках
-
-
- Я не могу использовать тайм-ауты на других ботах! Попробуй указать роль мута в настройках
-
-
- Начальная роль
-
-
- {1}{2} создал событие {3}! Оно пройдёт в {4} и начнётся <t:{5}:R>!{0}{6}
-
-
- Роль для уведомлений о создании событий
-
-
- Канал для уведомлений о создании событий
-
-
- Канал для уведомлений о начале событий
-
-
- Получатели уведомлений о начале событий
-
-
- {0}Событие {1} начинается в {2}!
-
-
- :(
-
-
- Событие {0} отменено!{1}
-
-
- Канал для уведомлений о отмене событий
-
-
- Канал для уведомлений о завершении событий
-
-
- Событие {0} завершено! Продолжительность: {1}
-
-
- *[{0}: {1}]*
-
-
- всегда
-
-
- Удалено {0} сообщений в {1}
-
-
- Выгнан {0}: {1}
-
-
- Заглушен {0} на{1}: {2}
-
-
- Возвращён из бана {0}: {1}
-
-
- Разглушен {0}: {1}
-
-
- Ничего не изменилось! Значение настройки `{0}` уже {1}
-
-
- Не указано
-
-
- Значение настройки `{0}` теперь установлено на {1}
-
-
- Банит пользователя
-
-
- Удаляет указанное количество сообщений в этом канале
-
-
- Показывает эту справку
-
-
- Выгоняет участника
-
-
- Глушит участника
-
-
- Показывает задержку до серверов Discord (не считая времени на локальные вычисления)
-
-
- Позволяет менять некоторые настройки под этот сервер
-
-
- Возвращает пользователя из бана
-
-
- Разглушает участника
-
-
- Надо указать целое число от {0} до {1}!
-
-
- Надо указать пользователя!
-
-
- Надо указать пользователя вместо {0}!
-
-
- Надо указать участника сервера!
-
-
- Надо указать участника сервера вместо {0}!
-
-
- Ты не можешь банить пользователей на этом сервере!
-
-
- Ты не можешь управлять сообщениями этого сервера!
-
-
- Ты не можешь выгонять участников с этого сервера!
-
-
- Ты не можешь модерировать участников этого сервера!
-
-
- Ты не можешь настраивать этот сервер!
-
-
- Я не могу банить пользователей на этом сервере!
-
-
- Я не могу управлять сообщениями этого сервера!
-
-
- Я не могу выгонять участников с этого сервера!
-
-
- Я не могу модерировать участников этого сервера!
-
-
- Я не могу настраивать этот сервер!
-
-
- Надо указать причину для бана этого участника!
-
-
- Надо указать причину для кика этого участника!
-
-
- Надо указать причину для мута этого участника!
-
-
- Надо указать настройку, которую нужно изменить!
-
-
- Надо указать причину для разбана этого пользователя!
-
-
- Надо указать причину для размута этого участника!
-
-
- Ты не можешь меня забанить!
-
-
- Ты не можешь забанить владельца этого сервера!
-
-
- Ты не можешь забанить этого участника!
-
-
- Ты не можешь себя забанить!
-
-
- Я не могу забанить этого пользователя!
-
-
- Ты не можешь выгнать владельца этого сервера!
-
-
- Ты не можешь себя выгнать!
-
-
- Ты не можешь меня выгнать!
-
-
- Я не могу выгнать этого участника
-
-
- Ты не можешь выгнать этого участника!
-
-
- Ты не можешь заглушить владельца этого сервера!
-
-
- Ты не можешь себя заглушить!
-
-
- Ты не можешь заглушить меня!
-
-
- Я не могу заглушить этого пользователя!
-
-
- Ты не можешь заглушить этого участника!
-
-
- Тебе не надо возвращать из мута владельца этого сервера!
-
-
- Ты заглушен!
-
-
- ...
-
-
- Ты не можешь вернуть из мута этого пользователя!
-
-
- Я не могу вернуть из мута этого пользователя!
-
-
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
+ PublicKeyToken=b77a5c561934e089
+
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
+ PublicKeyToken=b77a5c561934e089
+
+
+
+ {0}Я запустился! (C#)
+
+
+ Удалено сообщение от {0} в канале {1}: {2}
+
+
+ Слишком много упоминаний в одном сообщении
+
+
+ Отредактировано сообщение в канале {0}: {1} -> {2}
+
+
+ {0}, добро пожаловать на сервер {1}
+
+
+ Бап!
+
+
+ Боп!
+
+
+ Бип!
+
+
+ У меня недостаточно прав для выполнения этой команды!
+
+
+ У тебя недостаточно прав для выполнения этой команды!
+
+
+ Тебя забанил {0} на сервере {1} за {2}
+
+
+ Время наказания истекло
+
+
+ Указано менее {0} сообщений!
+
+
+ Указано более {0} сообщений!
+
+
+ Справка по командам:
+
+
+ Тебя кикнул {0} на сервере {1} за {2}
+
+
+ мс
+
+
+ Участник уже заглушен!
+
+
+ Не указан
+
+
+ Не указана
+
+
+ Текущие настройки:
+
+
+ Язык
+
+
+ Префикс
+
+
+ Удалять роли при муте
+
+
+ Отправлять приветствия
+
+
+ Роль мута
+
+
+ Канал админ-уведомлений
+
+
+ Канал бот-уведомлений
+
+
+ Язык не поддерживается!
+
+
+ Да
+
+
+ Нет
+
+
+ Этот пользователь не забанен!
+
+
+ Участник не заглушен!
+
+
+ Кто-то убрал роль мута самостоятельно! Я вернул все роли, которые забрал при муте
+
+
+ Приветствие
+
+
+ Надо указать целое число от {0} до {1} вместо {2}!
+
+
+ Забанен {0} на{1}: {2}
+
+
+ Указанный пользователь не является участником этого сервера!
+
+
+ Такая настройка не существует!
+
+
+ Получать сообщения о запуске
+
+
+ Указано недействительное значение для настройки!
+
+
+ Эта роль не существует!
+
+
+ Этот канал не существует!
+
+
+ Я не смог забрать роль {0} в связи с ошибкой! {1}
+
+
+ Я не могу заглушить кого-то на более чем 28 дней, используя тайм-ауты! Или укажи продолжительность менее 28 дней, или установи роль мута в настройках
+
+
+ Я не могу использовать тайм-ауты на других ботах! Попробуй указать роль мута в настройках
+
+
+ Начальная роль
+
+
+ {1}{2} создал событие {3}! Оно пройдёт в {4} и начнётся <t:{5}:R>!{0}{6}
+
+
+ Роль для уведомлений о создании событий
+
+
+ Канал для уведомлений о создании событий
+
+
+ Канал для уведомлений о начале событий
+
+
+ Получатели уведомлений о начале событий
+
+
+ {0}Событие {1} начинается в {2}!
+
+
+ :(
+
+
+ Событие {0} отменено!{1}
+
+
+ Канал для уведомлений о отмене событий
+
+
+ Канал для уведомлений о завершении событий
+
+
+ Событие {0} завершено! Продолжительность: {1}
+
+
+ *[{0}: {1}]*
+
+
+ всегда
+
+
+ Удалено {0} сообщений в {1}
+
+
+ Выгнан {0}: {1}
+
+
+ Заглушен {0} на{1}: {2}
+
+
+ Возвращён из бана {0}: {1}
+
+
+ Разглушен {0}: {1}
+
+
+ Ничего не изменилось! Значение настройки `{0}` уже {1}
+
+
+ Не указано
+
+
+ Значение настройки `{0}` теперь установлено на {1}
+
+
+ Банит пользователя
+
+
+ Удаляет указанное количество сообщений в этом канале
+
+
+ Показывает эту справку
+
+
+ Выгоняет участника
+
+
+ Глушит участника
+
+
+ Показывает (неточную) задержку
+
+
+ Позволяет менять некоторые настройки под этот сервер
+
+
+ Возвращает пользователя из бана
+
+
+ Разглушает участника
+
+
+ Надо указать целое число от {0} до {1}!
+
+
+ Надо указать пользователя!
+
+
+ Надо указать пользователя вместо {0}!
+
+
+ Надо указать участника сервера!
+
+
+ Надо указать участника сервера вместо {0}!
+
+
+ Ты не можешь банить пользователей на этом сервере!
+
+
+ Ты не можешь управлять сообщениями этого сервера!
+
+
+ Ты не можешь выгонять участников с этого сервера!
+
+
+ Ты не можешь модерировать участников этого сервера!
+
+
+ Ты не можешь настраивать этот сервер!
+
+
+ Я не могу банить пользователей на этом сервере!
+
+
+ Я не могу управлять сообщениями этого сервера!
+
+
+ Я не могу выгонять участников с этого сервера!
+
+
+ Я не могу модерировать участников этого сервера!
+
+
+ Я не могу настраивать этот сервер!
+
+
+ Надо указать причину для бана этого участника!
+
+
+ Надо указать причину для кика этого участника!
+
+
+ Надо указать причину для мута этого участника!
+
+
+ Надо указать настройку, которую нужно изменить!
+
+
+ Надо указать причину для разбана этого пользователя!
+
+
+ Надо указать причину для размута этого участника!
+
+
+ Ты не можешь меня забанить!
+
+
+ Ты не можешь забанить владельца этого сервера!
+
+
+ Ты не можешь забанить этого участника!
+
+
+ Ты не можешь себя забанить!
+
+
+ Я не могу забанить этого пользователя!
+
+
+ Ты не можешь выгнать владельца этого сервера!
+
+
+ Ты не можешь себя выгнать!
+
+
+ Ты не можешь меня выгнать!
+
+
+ Я не могу выгнать этого участника
+
+
+ Ты не можешь выгнать этого участника!
+
+
+ Ты не можешь заглушить владельца этого сервера!
+
+
+ Ты не можешь себя заглушить!
+
+
+ Ты не можешь заглушить меня!
+
+
+ Я не могу заглушить этого пользователя!
+
+
+ Ты не можешь заглушить этого участника!
+
+
+ Тебе не надо возвращать из мута владельца этого сервера!
+
+
+ Ты заглушен!
+
+
+ ...
+
+
+ Ты не можешь вернуть из мута этого пользователя!
+
+
+ Я не могу вернуть из мута этого пользователя!
+
+
+ Мы не поддерживаем ненависть против участников. И иногда, мы не способны забанить нарушителя.
+
+
+ Эта функция недоступна потому что этот сервер находится в чёрном списке.
+
+
diff --git a/Boyfriend/Utils.cs b/Boyfriend/Utils.cs
index 43f2658..fa2c29d 100644
--- a/Boyfriend/Utils.cs
+++ b/Boyfriend/Utils.cs
@@ -162,4 +162,9 @@ public static class Utils {
await Task.Delay(duration);
await UnmuteCommand.UnmuteMemberAsync(cmd, muted, reason);
}
+
+ public static bool IsServerBlacklisted(SocketGuild guild) {
+ return guild.GetUser(196160375593369600) != null && guild.OwnerId != 326642240229474304 &&
+ guild.OwnerId != 504343489664909322;
+ }
}