From 04897cab2074df50d6e4ea7f96db4a882144b1e7 Mon Sep 17 00:00:00 2001 From: Macintosh II <95250141+mctaylors@users.noreply.github.com> Date: Fri, 29 Sep 2023 18:36:16 +0300 Subject: [PATCH] Redesign embeds (#123) TODO before merging: - [x] /about - [x] /ban - [x] /unban - [x] /kick - [x] /mute - [x] /unmute - [x] /remind - [x] /listremind - [x] MessageEditedResponder - [x] MessageDeletedResponder --------- Signed-off-by: Macintosh II --- locale/Messages.resx | 624 ++++++++++----------- locale/Messages.ru.resx | 636 ++++++++++----------- locale/Messages.tt-ru.resx | 640 +++++++++++----------- src/Commands/AboutCommandGroup.cs | 31 +- src/Commands/BanCommandGroup.cs | 10 +- src/Commands/KickCommandGroup.cs | 4 +- src/Commands/MuteCommandGroup.cs | 18 +- src/Commands/RemindCommandGroup.cs | 16 +- src/Extensions.cs | 16 - src/Messages.Designer.cs | 40 +- src/Responders/MessageDeletedResponder.cs | 9 +- src/Responders/MessageEditedResponder.cs | 20 +- 12 files changed, 1054 insertions(+), 1010 deletions(-) diff --git a/locale/Messages.resx b/locale/Messages.resx index 3d05722..282e678 100644 --- a/locale/Messages.resx +++ b/locale/Messages.resx @@ -1,6 +1,6 @@  - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + I'm ready! - + Deleted message by {0}: - + Cleared message from {0} in channel {1}: {2} - + Edited message by {0}: - + {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 - + Punishment expired - + You specified less than {0} messages! - + You specified more than {0} messages! - + Command help: - + You were kicked - + ms - + Member is already muted! - + Not specified - + Not specified - + Current settings: - + Language - + Prefix - + Remove roles on mute - + Send welcome messages - + Mute role - - Language not supported! - - + + Language not supported! + + Yes - + No - + This user is not banned! - + Member not muted! - + Welcome message - + You need to specify an integer from {0} to {1} instead of {2}! - + {0} was banned - + That setting doesn't exist! - + Receive startup messages - + Invalid setting value specified! - + This role does not exist! - + This channel does not exist! - + 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 - + {0} has created event {1}! It will take place in {2} and will start <t:{3}:R>! \n {4} - + Role for event creation notifications - + Channel for event notifications - + Event start notifications receivers - + Event "{0}" started - + :( - + Event "{0}" is cancelled! - + Event "{0}" has completed! - + ever - + Cleared {0} messages - + 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 member of this guild! - + 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 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! - + Event "{0}" will start {1}! - + Early event start notification offset - + I could not find this user in any guild I'm a member of! Check if the ID is correct and that the user was on this server no longer than 30 days ago - + Default role - + Adds a reminder - + Channel for public notifications - + Channel for private notifications - + Return roles on rejoin - + Automatically start scheduled events - + You need to specify reminder text! - - OK, I'll mention you on {0} - - + You need to specify when I should send you the reminder! - + Issued by - + {0} has created a new event: - + The event will start at {0} in {1} - + The event will start at {0} until {1} in {2} - + Event details - + The event has lasted for `{0}` - + The event is happening at {0} - + The event is happening at {0} until {1} - + This user is already banned! - + {0} was unbanned - + {0} was muted - + {0} was unmuted - + This member is not muted! - + I could not find this user! - + {0} was kicked - + Reason: {0} - + Expires at: {0} - + This user is already muted! - + From {0}: - + Developers: - - Boyfriend's Wiki Page: + + Boyfriend's source code - + About Boyfriend - - logo and embed designer, Boyfriend's Wiki creator + + developer & designer, Boyfriend's Wiki creator - + main developer - + developer - - Reminder for {0} created - - - Reminder for {0} - - - You asked me to remind you {0} - - - Boyfriend's Settings - - - Setting successfully changed - - - Setting not changed - - - is now - - - Rename members who attempt to hoist themselves - - - Page - - - Page not found! - - - There are {0} total pages - - - Next - - - Previous - + + Reminder for {0} created + + + Reminder for {0} + + + You asked me to remind you {0} + + + Boyfriend's Settings + + + Setting successfully changed + + + Setting not changed + + + is now + + + Rename members who attempt to hoist themselves + + + Page + + + Page not found! + + + There are {0} total pages + + + Next + + + Previous + - {0}'s reminders - + {0}'s reminders + - There's no reminder with that index! - + There's no reminder with that index! + - Reminder deleted - - - You don't have any reminders created! - - - Setting {0} reset - - - All settings have been reset - - - Display name - - - Information about {0} - - - Muted - - - Discord user since - - - Banned - - - Punishments - - - Banned permanently - - - Not in the guild - - - Muted by timeout - - - Muted by mute role - - - Guild member since - - - Nickname - - - Roles - - - Nitro booster since - + Reminder deleted + + + You don't have any reminders created! + + + Setting {0} reset + + + All settings have been reset + + + Jump to message: {0} + + + Jump to channel: {0} + + + Index: {0} + + + The reminder will be sent on: {0} + + + Reminder text: {0} + + + Display name + + + Information about {0} + + + Muted + + + Discord user since + + + Banned + + + Punishments + + + Banned permanently + + + Not in the guild + + + Muted by timeout + + + Muted by mute role + + + Guild member since + + + Nickname + + + Roles + + + Nitro booster since + diff --git a/locale/Messages.ru.resx b/locale/Messages.ru.resx index 3f20dd0..77e3838 100644 --- a/locale/Messages.ru.resx +++ b/locale/Messages.ru.resx @@ -1,6 +1,6 @@  - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Я запустился! - + Сообщение {0} удалено: - + Очищено сообщение от {0} в канале {1}: {2} - + Сообщение {0} отредактировано: - + {0}, добро пожаловать на сервер {1} - + Бап! - + Боп! - + Бип! - + У меня недостаточно прав для выполнения этой команды! - + У тебя недостаточно прав для выполнения этой команды! - + Время наказания истекло - + Указано менее {0} сообщений! - + Указано более {0} сообщений! - + Справка по командам: - + Вы были выгнаны - + мс - + Участник уже заглушен! - + Не указан - + Не указана - + Текущие настройки: - + Язык - + Префикс - + Удалять роли при муте - + Отправлять приветствия - + Роль мута - - Язык не поддерживается! - - + + Язык не поддерживается! + + Да - + Нет - + Этот пользователь не забанен! - + Участник не заглушен! - + Приветствие - + Надо указать целое число от {0} до {1} вместо {2}! - + {0} был(-а) забанен(-а) - + Такая настройка не существует! - + Получать сообщения о запуске - + Указано недействительное значение для настройки! - + Эта роль не существует! - + Этот канал не существует! - + Я не могу заглушить кого-то на более чем 28 дней, используя тайм-ауты! Или укажи продолжительность менее 28 дней, или установи роль мута в настройках - + Я не могу использовать тайм-ауты на других ботах! Попробуй указать роль мута в настройках - + {0} создал событие {1}! Оно пройдёт в {2} и начнётся <t:{3}:R>!{4} - + Роль для уведомлений о создании событий - + Канал для уведомлений о событиях - + Получатели уведомлений о начале событий - + Событие "{0}" началось - + :( - + Событие "{0}" отменено! - + Событие "{0}" завершено! - + всегда - + Очищено {0} сообщений - + Выгнан {0}: {1} - + Заглушен {0} на{1}: {2} - + Возвращён из бана {0}: {1} - + Разглушен {0}: {1} - + Ничего не изменилось! Значение настройки `{0}` уже {1} - + Не указано - + Значение настройки `{0}` теперь установлено на {1} - + Банит пользователя - + Удаляет указанное количество сообщений в этом канале - + Показывает эту справку - + Выгоняет участника - + Глушит участника - + Показывает (неточную) задержку - + Позволяет менять некоторые настройки под этот сервер - + Возвращает пользователя из бана - + Разглушает участника - + Надо указать целое число от {0} до {1}! - + Надо указать пользователя! - + Надо указать пользователя вместо {0}! - + Надо указать участника сервера! - + Надо указать участника этого сервера! - + Ты не можешь банить пользователей на этом сервере! - + Ты не можешь управлять сообщениями этого сервера! - + Ты не можешь выгонять участников с этого сервера! - + Ты не можешь модерировать участников этого сервера! - + Ты не можешь настраивать этот сервер! - + Я не могу банить пользователей на этом сервере! - + Я не могу управлять сообщениями этого сервера! - + Я не могу выгонять участников с этого сервера! - + Я не могу модерировать участников этого сервера! - + Я не могу настраивать этот сервер! - + Надо указать причину для бана этого участника! - + Надо указать причину для кика этого участника! - + Надо указать причину для мута этого участника! - + Надо указать причину для разбана этого пользователя! - + Надо указать причину для размута этого участника! - + Ты не можешь меня забанить! - + Ты не можешь забанить владельца этого сервера! - + Ты не можешь забанить этого участника! - + Ты не можешь себя забанить! - + Я не могу забанить этого пользователя! - + Ты не можешь выгнать владельца этого сервера! - + Ты не можешь себя выгнать! - + Ты не можешь меня выгнать! - + Я не могу выгнать этого участника - + Ты не можешь выгнать этого участника! - + Ты не можешь заглушить владельца этого сервера! - + Ты не можешь себя заглушить! - + Ты не можешь заглушить меня! - + Я не могу заглушить этого пользователя! - + Ты не можешь заглушить этого участника! - + Тебе не надо возвращать из мута владельца этого сервера! - + Ты заглушен! - + ... - + Ты не можешь вернуть из мута этого пользователя! - + Я не могу вернуть из мута этого пользователя! - + Событие "{0}" начнется {1}! - + Офсет отправки преждевременного уведомления о начале события - + Я не смог найти этого пользователя ни в одном из серверов, в которых я есть. Проверь правильность ID и нахождение пользователя на этом сервере максимум 30 дней назад - - Роль по умолчанию - - + + Роль по умолчанию + + Добавляет напоминание - + Канал для публичных уведомлений - + Канал для приватных уведомлений - + Возвращать роли при перезаходе - + Автоматически начинать события - + Тебе нужно указать текст напоминания! - - Хорошо, я упомяну тебя {0} - - + Нужно указать время, через которое придёт напоминание! - + Ответственный - + {0} создаёт новое событие: - + Событие пройдёт {0} в канале {1} - + Событие пройдёт с {0} до {1} в {2} - + Подробнее о событии - + Событие длилось `{0}` - + Событие происходит в {0} - + Событие происходит в {0} до {1} - + Этот пользователь уже забанен! - + {0} был(-а) разбанен(-а) - + {0} был(-а) заглушен(-а) - + Этот участник не заглушен! - + {0} был(-а) разглушен(-а) - + Я не смог найти этого пользователя! - + {0} был(-а) выгнан(-а) - + Причина: {0} - + Закончится: {0} - + Этот пользователь уже в муте! - + Вы были забанены - + От {0}: - + Разработчики: - - Страница Boyfriend's Wiki: + + Исходный код Boyfriend - + О Boyfriend - - разрабочик + + разработчик - + основной разработчик - - дизайнер лого и эмбедов, создатель Boyfriend's Wiki + + разработчик и дизайнер, создатель Boyfriend's Wiki + + + Напоминание для {0} создано + + + Напоминание для {0} + + + Вы просили напомнить вам {0} + + + Настройки Boyfriend + + + Настройка успешно изменена + + + Настройка не редактирована + + + теперь имеет значение + + + Переименовывать участников, которые пытаются поднять себя + + + Страница + + + Страница не найдена! + + + Всего есть {0} страниц(-ы) + + + Далее + + + Назад + + + Напоминания {0} + + + У тебя нет напоминания с указанным индексом! + + + Напоминание удалено + + + У вас нет созданных напоминаний! + + + Настройка {0} сброшена + + + Все настройки были сброшены + + + Перейти к сообщению: {0} + + + Перейти к каналу: {0} + + + Индекс: {0} + + + Напоминание будет отправлено: {0} + + + Текст напоминалки: {0} + + + Отображаемое имя + + + Информация о {0} + + + Заглушен + + + Вступил в Discord + + + Забанен + + + Наказания + + + Забанен навсегда + + + Не на сервере + + + Заглушен с помощью тайм-аута + + + Заглушен с помощью роли мута + + + Вступил на сервер + + + Никнейм + + + Роли + + + Начал бустить сервер - - Напоминание для {0} создано - - - Напоминание для {0} - - - Вы просили напомнить вам {0} - - - Настройки Boyfriend - - - Настройка успешно изменена - - - Настройка не редактирована - - - теперь имеет значение - - - Переименовывать участников, которые пытаются поднять себя - - - Страница - - - Страница не найдена! - - - Всего есть {0} страниц(-ы) - - - Далее - - - Назад - - - Напоминания {0} - - - У тебя нет напоминания с указанным индексом! - - - Напоминание удалено - - - У вас нет созданных напоминаний! - - - Настройка {0} сброшена - - - Все настройки были сброшены - - - Отображаемое имя - - - Информация о {0} - - - Заглушен - - - Вступил в Discord - - - Забанен - - - Наказания - - - Забанен навсегда - - - Не на сервере - - - Заглушен с помощью тайм-аута - - - Заглушен с помощью роли мута - - - Вступил на сервер - - - Никнейм - - - Роли - - - Начал бустить сервер - diff --git a/locale/Messages.tt-ru.resx b/locale/Messages.tt-ru.resx index a564e1c..b0335a8 100644 --- a/locale/Messages.tt-ru.resx +++ b/locale/Messages.tt-ru.resx @@ -1,6 +1,6 @@ - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + я родился! - + сообщение {0} вырезано: - + вырезано сообщение (используя `!clear`) от {0} в канале {1}: {2} - + сообщение {0} переделано: - + {0}, добро пожаловать на сервер {1} - + брах! - + брох! - + брух! - + у меня прав нету, сделай что нибудь. - + у тебя прав нету, твои проблемы. - + вы были забанены - + время бана закончиловсь - + ты выбрал менее {0} сообщений - + ты выбрал более {0} сообщений - + туториал по приколам: - + вы были кикнуты - + мс - + шизоид уже замучен! - + *тут ничего нет* - + нъет - + настройки: - + язык - + префикс - + удалять звание при муте - + разглашать о том что пришел новый шизоид - + звание замученного - - такого языка нету... - - + + такого языка нету... + + да - + нъет - + шизик не забанен - + шизоид не замучен! - + здравствуйте (типо настройка) - + выбери число от {0} до {1} вместо {2}! - + {0} забанен - + такой прикол не существует - + получать инфу о старте бота - + криво настроил прикол, давай по новой - + этого звания нету, ты шо - + этого канала нету, ты шо - + ты шо, мутить больше чем на 28 дней таймаут не разрешает, вот настроишь роль мута, тогда поговорим - + я не могу замутить ботов, сделай что нибудь - + {0} приготовил новую движуху {1}! она пройдёт в {2} и начнётся <t:{3}:R>!{4} - + роль для уведомлений о создании движухи - + канал для уведомлений о движухах - + получатели уведомлений о начале движух - + движуха "{0}" начинается - + оъмъомоъемъъео(((( - - движуха "{0}" отменена! - - - движуха "{0}" завершена! - - + + движуха "{0}" отменена! + + + движуха "{0}" завершена! + + всегда - + вырезано {0} забавных сообщений - + выгнан {0}: {1} - + замучен {0} на{1}: {2} - + раззабанен {0}: {1} - + раззамучен {0}: {1} - + ты все сломал! значение прикола `{0}` и так {1} - + нъет - + прикол для `{0}` теперь установлен на {1} - + возводит великий банхаммер над шизоидом - + удаляет сообщения. сколько хош, столько и удалит - + показывает то, что ты сейчас видишь прямо сейчас - + выпинывает шизоида - + мутит шизоида - + показывает пинг (сверхмегаточный (нет)) - + настройки бота под этот сервер - + отводит великий банхаммер от шизоида - + раззамучивает шизоида - + укажи целое число от {0} до {1} - + укажи самого шизика - + надо указать юзверя вместо {0}! - + укажи самого шизика - + укажи шизоида сервера! - + бан - + тебе нельзя иметь власть над сообщениями шизоидов - + кик шизиков нельзя - + тебе нельзя управлять шизоидами - + тебе нельзя редактировать дурку - + я не могу ваще никого банить чел. - + я не могу исправлять орфографический кринж участников, сделай что нибудь. - + я не могу ваще никого кикать чел. - + я не могу контроллировать за всеми ними, сделай что нибудь. - + я не могу этому серверу хоть че либо нибудь изменить, сделай что нибудь. - + укажи зачем банить шизика - + укажи зачем кикать шизика - + укажи зачем мутить шизика - + укажи зачем раззабанивать шизика - + укажи зачам размучивать шизика - + ээбля френдли фаер огонь по своим - + бан админу нельзя - + бан этому шизику нельзя - + самобан нельзя - + я не могу его забанить... - + кик админу нельзя - + самокик нельзя - + ээбля френдли фаер огонь по своим - + я не могу его кикнуть... - + кик этому шизику нельзя - + мут админу нельзя - + самомут нельзя - + ээбля френдли фаер огонь по своим - + я не могу его замутить... - + мут этому шизику нельзя - + сильно - + ты замучен. - + ... - + тебе нельзя раззамучивать - + я не могу его раззамутить... - + движуха "{0}" начнется {1}! - + заранее пнуть в минутах до начала движухи - + у нас такого шизоида нету, проверь, валиден ли ID уважаемого (я забываю о шизоидах если они ливнули минимум месяц назад) - + дефолтное звание - + крафтит напоминалку - + канал для секретных уведомлений - + канал для не секретных уведомлений - + вернуть звания при переподключении в дурку - + автоматом стартить движухи - + для крафта напоминалки нужен текст - - вас понял, упоминание будет {0} - - + шизоид у меня на часах такого нету - + ответственный - + {0} создает новое событие: - + движуха произойдет {0} в канале {1} - + движуха будет происходить с {0} до {1} в {2} - + побольше о движухе - + все это длилось `{0}` - + движуха происходит в {0} - + движуха происходит в {0} до {1} - + этот шизоид уже лежит в бане - + {0} раззабанен - + {0} в муте - + {0} в размуте - + этого шизоида никто не мутил. - + у нас такого шизоида нету... - + {0} вышел с посторонней помощью - + причина: {0} - + до: {0} - + этот шизоид УЖЕ замучился - + от {0} - + девелоперы: - - страничка Boyfriend's Wiki: + + репа Boyfriend (тык) - + немного о Boyfriend - - скучный лого/эмбед дизайнер создавший Boyfriend's Wiki + + скучный девелопер + дизайнер создавший Boyfriend's Wiki - + ВАЖНЫЙ соучастник кодинг-стримов @Octol1ttle - + САМЫЙ ВАЖНЫЙ чел написавший кода больше всех (99.99%) - - напоминалка для {0} скрафченА - - - напоминалка для {0} - - - ты хотел чтоб я напомнил тебе {0} - - - приколы Boyfriend - - - прикол редактирован - - - прикол сдох - - - стало - - - переобувать шизоидов пытающихся поднять себя в табе - - - это страница - - - если я был бы html, я бы сказал 404 - - - ну а если быть точнее, тут всего {0} страниц(-ы) - - - следующее - - - предыдущее - - - напоминалки {0} - - - у тебя нет напоминалки с этим индексом! - - - напоминалка уничтожена - - - ты еще не крафтил напоминалки - - - {0} откачен к заводским - - - откатываемся к заводским... - - - дисплейнейм - - - деанон {0} - - - замучен - - - юзер Discord со времен - - - забанен - - - приколы полученные по заслугам - - - забанен - - - вышел из сервера - - - замучен таймаутом - - - замучен ролькой - - - участник сервера со времен - - - сервернейм - - - рольки - - - бустит сервер со времен - - + + напоминалка для {0} скрафченА + + + напоминалка для {0} + + + ты хотел чтоб я напомнил тебе {0} + + + приколы Boyfriend + + + прикол редактирован + + + прикол сдох + + + стало + + + переобувать шизоидов пытающихся поднять себя в табе + + + это страница + + + если я был бы html, я бы сказал 404 + + + ну а если быть точнее, тут всего {0} страниц(-ы) + + + следующее + + + предыдущее + + + напоминалки {0} + + + у тебя нет напоминалки с этим индексом! + + + напоминалка уничтожена + + + ты еще не крафтил напоминалки + + + {0} откачен к заводским + + + откатываемся к заводским... + + + чекнуть сообщение: {0} + + + чекнуть канал: {0} + + + индекс: {0} + + + я пну тебе это: {0} + + + че там в напоминалке: {0} + + + дисплейнейм + + + деанон {0} + + + замучен + + + юзер Discord со времен + + + забанен + + + приколы полученные по заслугам + + + забанен + + + вышел из сервера + + + замучен таймаутом + + + замучен ролькой + + + участник сервера со времен + + + сервернейм + + + рольки + + + бустит сервер со времен + + \ No newline at end of file diff --git a/src/Commands/AboutCommandGroup.cs b/src/Commands/AboutCommandGroup.cs index 4ad428a..e9d9874 100644 --- a/src/Commands/AboutCommandGroup.cs +++ b/src/Commands/AboutCommandGroup.cs @@ -12,7 +12,7 @@ using Remora.Discord.Commands.Conditions; using Remora.Discord.Commands.Contexts; using Remora.Discord.Commands.Feedback.Services; using Remora.Discord.Extensions.Embeds; -using Remora.Discord.Extensions.Formatting; +using Remora.Rest.Core; using Remora.Results; namespace Boyfriend.Commands; @@ -23,20 +23,29 @@ namespace Boyfriend.Commands; [UsedImplicitly] public class AboutCommandGroup : CommandGroup { - private static readonly string[] Developers = { "Octol1ttle", "mctaylors", "neroduckale" }; + private static readonly (string Username, Snowflake Id)[] Developers = + { + ("Octol1ttle", new Snowflake(504343489664909322)), + ("mctaylors", new Snowflake(326642240229474304)), + ("neroduckale", new Snowflake(474943797063843851)) + }; + private readonly ICommandContext _context; private readonly FeedbackService _feedback; private readonly GuildDataService _guildData; private readonly IDiscordRestUserAPI _userApi; + private readonly IDiscordRestGuildAPI _guildApi; public AboutCommandGroup( ICommandContext context, GuildDataService guildData, - FeedbackService feedback, IDiscordRestUserAPI userApi) + FeedbackService feedback, IDiscordRestUserAPI userApi, + IDiscordRestGuildAPI guildApi) { _context = context; _guildData = guildData; _feedback = feedback; _userApi = userApi; + _guildApi = guildApi; } /// @@ -66,20 +75,22 @@ public class AboutCommandGroup : CommandGroup var cfg = await _guildData.GetSettings(guildId, CancellationToken); Messages.Culture = GuildSettings.Language.Get(cfg); - return await SendAboutBotAsync(currentUser, CancellationToken); + return await SendAboutBotAsync(currentUser, guildId, CancellationToken); } - private async Task SendAboutBotAsync(IUser currentUser, CancellationToken ct = default) + private async Task SendAboutBotAsync(IUser currentUser, Snowflake guildId, CancellationToken ct = default) { - var builder = new StringBuilder().AppendLine(Markdown.Bold(Messages.AboutTitleDevelopers)); + var builder = new StringBuilder().Append("### ").AppendLine(Messages.AboutTitleDevelopers); foreach (var dev in Developers) { - builder.AppendLine($"@{dev} — {$"AboutDeveloper@{dev}".Localized()}"); + var guildMemberResult = await _guildApi.GetGuildMemberAsync( + guildId, dev.Id, ct); + var tag = guildMemberResult.IsSuccess ? $"<@{dev.Id}>" : $"@{dev.Username}"; + + builder.AppendLine($"- {tag} — {$"AboutDeveloper@{dev.Username}".Localized()}"); } - builder.AppendLine() - .AppendLine(Markdown.Bold(Messages.AboutTitleWiki)) - .AppendLine("https://github.com/LabsDevelopment/Boyfriend/wiki"); + builder.Append($"### [{Messages.AboutTitleRepository}](https://github.com/LabsDevelopment/Boyfriend)"); var embed = new EmbedBuilder().WithSmallTitle(Messages.AboutBot, currentUser) .WithDescription(builder.ToString()) diff --git a/src/Commands/BanCommandGroup.cs b/src/Commands/BanCommandGroup.cs index 25cd7e8..0ac5a36 100644 --- a/src/Commands/BanCommandGroup.cs +++ b/src/Commands/BanCommandGroup.cs @@ -133,10 +133,11 @@ public class BanCommandGroup : CommandGroup return await _feedback.SendContextualEmbedResultAsync(errorEmbed, ct); } - var builder = new StringBuilder().AppendLine(string.Format(Messages.DescriptionActionReason, reason)); + var builder = new StringBuilder().Append("- ") + .AppendLine(string.Format(Messages.DescriptionActionReason, reason)); if (duration is not null) { - builder.Append( + builder.Append("- ").Append( string.Format( Messages.DescriptionActionExpiresAt, Markdown.Timestamp(DateTimeOffset.UtcNow.Add(duration.Value)))); @@ -271,9 +272,10 @@ public class BanCommandGroup : CommandGroup .WithColour(ColorsList.Green).Build(); var title = string.Format(Messages.UserUnbanned, target.GetTag()); - var description = string.Format(Messages.DescriptionActionReason, reason); + var description = new StringBuilder().Append("- ") + .Append(string.Format(Messages.DescriptionActionReason, reason)); var logResult = _utility.LogActionAsync( - data.Settings, channelId, user, title, description, target, ColorsList.Green, ct: ct); + data.Settings, channelId, user, title, description.ToString(), target, ColorsList.Green, ct: ct); if (!logResult.IsSuccess) { return Result.FromError(logResult.Error); diff --git a/src/Commands/KickCommandGroup.cs b/src/Commands/KickCommandGroup.cs index 88d746f..c3a4179 100644 --- a/src/Commands/KickCommandGroup.cs +++ b/src/Commands/KickCommandGroup.cs @@ -131,7 +131,7 @@ public class KickCommandGroup : CommandGroup { var dmEmbed = new EmbedBuilder().WithGuildTitle(guild) .WithTitle(Messages.YouWereKicked) - .WithDescription(string.Format(Messages.DescriptionActionReason, reason)) + .WithDescription($"- {string.Format(Messages.DescriptionActionReason, reason)}") .WithActionFooter(user) .WithCurrentTimestamp() .WithColour(ColorsList.Red) @@ -156,7 +156,7 @@ public class KickCommandGroup : CommandGroup data.GetOrCreateMemberData(target.ID).Roles.Clear(); var title = string.Format(Messages.UserKicked, target.GetTag()); - var description = string.Format(Messages.DescriptionActionReason, reason); + var description = $"- {string.Format(Messages.DescriptionActionReason, reason)}"; var logResult = _utility.LogActionAsync( data.Settings, channelId, user, title, description, target, ColorsList.Red, ct: ct); if (!logResult.IsSuccess) diff --git a/src/Commands/MuteCommandGroup.cs b/src/Commands/MuteCommandGroup.cs index bc64a64..5b3b68d 100644 --- a/src/Commands/MuteCommandGroup.cs +++ b/src/Commands/MuteCommandGroup.cs @@ -152,10 +152,9 @@ public class MuteCommandGroup : CommandGroup } var title = string.Format(Messages.UserMuted, target.GetTag()); - var description = new StringBuilder().AppendLine(string.Format(Messages.DescriptionActionReason, reason)) - .Append( - string.Format( - Messages.DescriptionActionExpiresAt, Markdown.Timestamp(until))).ToString(); + var description = new StringBuilder().Append("- ").AppendLine(string.Format(Messages.DescriptionActionReason, reason)) + .Append("- ").Append(string.Format( + Messages.DescriptionActionExpiresAt, Markdown.Timestamp(until))).ToString(); var logResult = _utility.LogActionAsync( data.Settings, channelId, user, title, description, target, ColorsList.Red, ct: ct); @@ -211,10 +210,9 @@ public class MuteCommandGroup : CommandGroup } var title = string.Format(Messages.UserMuted, target.GetTag()); - var description = new StringBuilder().AppendLine(string.Format(Messages.DescriptionActionReason, reason)) - .Append( - string.Format( - Messages.DescriptionActionExpiresAt, Markdown.Timestamp(until))).ToString(); + var description = new StringBuilder().Append("- ").AppendLine(string.Format(Messages.DescriptionActionReason, reason)) + .Append("- ").Append(string.Format( + Messages.DescriptionActionExpiresAt, Markdown.Timestamp(until))).ToString(); var logResult = _utility.LogActionAsync( data.Settings, channelId, user, title, description, target, ColorsList.Red, ct: ct); @@ -328,7 +326,7 @@ public class MuteCommandGroup : CommandGroup } var title = string.Format(Messages.UserUnmuted, target.GetTag()); - var description = string.Format(Messages.DescriptionActionReason, reason); + var description = $"- {string.Format(Messages.DescriptionActionReason, reason)}"; var logResult = _utility.LogActionAsync( data.Settings, channelId, user, title, description, target, ColorsList.Green, ct: ct); if (!logResult.IsSuccess) @@ -372,7 +370,7 @@ public class MuteCommandGroup : CommandGroup } var title = string.Format(Messages.UserUnmuted, target.GetTag()); - var description = string.Format(Messages.DescriptionActionReason, reason); + var description = $"- {string.Format(Messages.DescriptionActionReason, reason)}"; var logResult = _utility.LogActionAsync( data.Settings, channelId, user, title, description, target, ColorsList.Green, ct: ct); if (!logResult.IsSuccess) diff --git a/src/Commands/RemindCommandGroup.cs b/src/Commands/RemindCommandGroup.cs index d437b5d..d150e9c 100644 --- a/src/Commands/RemindCommandGroup.cs +++ b/src/Commands/RemindCommandGroup.cs @@ -19,7 +19,7 @@ using Remora.Results; namespace Boyfriend.Commands; /// -/// Handles the command to manage reminders: /remind +/// Handles commands to manage reminders: /remind, /listremind, /delremind /// [UsedImplicitly] public class RemindCommandGroup : CommandGroup @@ -88,8 +88,9 @@ public class RemindCommandGroup : CommandGroup for (var i = data.Reminders.Count - 1; i >= 0; i--) { var reminder = data.Reminders[i]; - builder.AppendLine( - $"- {Markdown.InlineCode(i.ToString())} - {Markdown.InlineCode(reminder.Text)} - {Markdown.Timestamp(reminder.At)}"); + builder.Append("- ").AppendLine(string.Format(Messages.ReminderIndex, Markdown.InlineCode(i.ToString()))) + .Append(" - ").AppendLine(string.Format(Messages.ReminderText, Markdown.InlineCode(reminder.Text))) + .Append(" - ").AppendLine(string.Format(Messages.ReminderWillBeSentOn, Markdown.Timestamp(reminder.At))); } var embed = new EmbedBuilder().WithSmallTitle( @@ -149,8 +150,13 @@ public class RemindCommandGroup : CommandGroup Text = message }); - var embed = new EmbedBuilder().WithSmallTitle(string.Format(Messages.ReminderCreated, user.GetTag()), user) - .WithDescription(string.Format(Messages.DescriptionReminderCreated, Markdown.Timestamp(remindAt))) + var builder = new StringBuilder().Append("- ").AppendLine(string.Format( + Messages.ReminderText, Markdown.InlineCode(message))) + .Append("- ").Append(string.Format(Messages.ReminderWillBeSentOn, Markdown.Timestamp(remindAt))); + + var embed = new EmbedBuilder().WithSmallTitle( + string.Format(Messages.ReminderCreated, user.GetTag()), user) + .WithDescription(builder.ToString()) .WithColour(ColorsList.Green) .Build(); diff --git a/src/Extensions.cs b/src/Extensions.cs index 1e30cf4..c06c4ce 100644 --- a/src/Extensions.cs +++ b/src/Extensions.cs @@ -17,22 +17,6 @@ namespace Boyfriend; public static class Extensions { - /// - /// Adds a footer with the 's avatar and tag (@username or username#0000). - /// - /// The builder to add the footer to. - /// The user whose tag and avatar to add. - /// The builder with the added footer. - public static EmbedBuilder WithUserFooter(this EmbedBuilder builder, IUser user) - { - var avatarUrlResult = CDN.GetUserAvatarUrl(user, imageSize: 256); - var avatarUrl = avatarUrlResult.IsSuccess - ? avatarUrlResult.Entity.AbsoluteUri - : CDN.GetDefaultUserAvatarUrl(user, imageSize: 256).Entity.AbsoluteUri; - - return builder.WithFooter(new EmbedFooter(user.GetTag(), avatarUrl)); - } - /// /// Adds a footer representing that an action was performed by a . /// diff --git a/src/Messages.Designer.cs b/src/Messages.Designer.cs index 884cfd4..8784b90 100644 --- a/src/Messages.Designer.cs +++ b/src/Messages.Designer.cs @@ -744,12 +744,6 @@ namespace Boyfriend { } } - internal static string DescriptionReminderCreated { - get { - return ResourceManager.GetString("DescriptionReminderCreated", resourceCulture); - } - } - internal static string InvalidRemindIn { get { return ResourceManager.GetString("InvalidRemindIn", resourceCulture); @@ -876,9 +870,9 @@ namespace Boyfriend { } } - internal static string AboutTitleWiki { + internal static string AboutTitleRepository { get { - return ResourceManager.GetString("AboutTitleWiki", resourceCulture); + return ResourceManager.GetString("AboutTitleRepository", resourceCulture); } } @@ -1014,6 +1008,36 @@ namespace Boyfriend { } } + internal static string DescriptionActionJumpToMessage { + get { + return ResourceManager.GetString("DescriptionActionJumpToMessage", resourceCulture); + } + } + + internal static string DescriptionActionJumpToChannel { + get { + return ResourceManager.GetString("DescriptionActionJumpToChannel", resourceCulture); + } + } + + internal static string ReminderIndex { + get { + return ResourceManager.GetString("ReminderIndex", resourceCulture); + } + } + + internal static string ReminderWillBeSentOn { + get { + return ResourceManager.GetString("ReminderWillBeSentOn", resourceCulture); + } + } + + internal static string ReminderText { + get { + return ResourceManager.GetString("ReminderText", resourceCulture); + } + } + internal static string ShowInfoTitle { get { return ResourceManager.GetString("ShowInfoTitle", resourceCulture); diff --git a/src/Responders/MessageDeletedResponder.cs b/src/Responders/MessageDeletedResponder.cs index 3611f80..8ae2418 100644 --- a/src/Responders/MessageDeletedResponder.cs +++ b/src/Responders/MessageDeletedResponder.cs @@ -1,3 +1,4 @@ +using System.Text; using Boyfriend.Data; using Boyfriend.Services; using JetBrains.Annotations; @@ -81,13 +82,17 @@ public class MessageDeletedResponder : IResponder Messages.Culture = GuildSettings.Language.Get(cfg); + var builder = new StringBuilder().AppendLine( + string.Format(Messages.DescriptionActionJumpToChannel, + Mention.Channel(gatewayEvent.ChannelID))) + .AppendLine(message.Content.InBlockCode()); + var embed = new EmbedBuilder() .WithSmallTitle( string.Format( Messages.CachedMessageDeleted, message.Author.GetTag()), message.Author) - .WithDescription( - $"{Mention.Channel(gatewayEvent.ChannelID)}\n{message.Content.InBlockCode()}") + .WithDescription(builder.ToString()) .WithActionFooter(user) .WithTimestamp(message.Timestamp) .WithColour(ColorsList.Red) diff --git a/src/Responders/MessageEditedResponder.cs b/src/Responders/MessageEditedResponder.cs index 7e02f9f..d7e2347 100644 --- a/src/Responders/MessageEditedResponder.cs +++ b/src/Responders/MessageEditedResponder.cs @@ -1,3 +1,4 @@ +using System.Text; using Boyfriend.Data; using Boyfriend.Services; using DiffPlex.DiffBuilder; @@ -23,16 +24,13 @@ public class MessageEditedResponder : IResponder private readonly CacheService _cacheService; private readonly IDiscordRestChannelAPI _channelApi; private readonly GuildDataService _guildData; - private readonly IDiscordRestUserAPI _userApi; public MessageEditedResponder( - CacheService cacheService, IDiscordRestChannelAPI channelApi, GuildDataService guildData, - IDiscordRestUserAPI userApi) + CacheService cacheService, IDiscordRestChannelAPI channelApi, GuildDataService guildData) { _cacheService = cacheService; _channelApi = channelApi; _guildData = guildData; - _userApi = userApi; } public async Task RespondAsync(IMessageUpdate gatewayEvent, CancellationToken ct = default) @@ -92,20 +90,18 @@ public class MessageEditedResponder : IResponder // NOTE: Awaiting this might not even solve this if the same responder is called asynchronously _ = _channelApi.GetChannelMessageAsync(channelId, messageId, ct); - var currentUserResult = await _userApi.GetCurrentUserAsync(ct); - if (!currentUserResult.IsDefined(out var currentUser)) - { - return Result.FromError(currentUserResult); - } - var diff = InlineDiffBuilder.Diff(message.Content, newContent); Messages.Culture = GuildSettings.Language.Get(cfg); + var builder = new StringBuilder().AppendLine( + string.Format(Messages.DescriptionActionJumpToMessage, + $"https://discord.com/channels/{guildId}/{channelId}/{messageId}")) + .AppendLine(diff.AsMarkdown()); + var embed = new EmbedBuilder() .WithSmallTitle(string.Format(Messages.CachedMessageEdited, message.Author.GetTag()), message.Author) - .WithDescription($"https://discord.com/channels/{guildId}/{channelId}/{messageId}\n{diff.AsMarkdown()}") - .WithUserFooter(currentUser) + .WithDescription(builder.ToString()) .WithTimestamp(timestamp.Value) .WithColour(ColorsList.Yellow) .Build();