Merge branch 'main' of ssh://github.com/pluralkit/pluralkit

This commit is contained in:
spiral 2022-06-11 00:48:09 -04:00
commit 6ed066de29
No known key found for this signature in database
GPG Key ID: 244A11E4B0BCF40E
7 changed files with 51 additions and 28 deletions

View File

@ -140,13 +140,12 @@ public class ProxiedMessage
var editType = isReproxy ? "reproxy" : "edit"; var editType = isReproxy ? "reproxy" : "edit";
var editTypeAction = isReproxy ? "reproxied" : "edited"; var editTypeAction = isReproxy ? "reproxied" : "edited";
// todo: is it correct to get a connection here?
await using var conn = await ctx.Database.Obtain();
FullMessage? msg = null; FullMessage? msg = null;
var (referencedMessage, _) = ctx.MatchMessage(false); var (referencedMessage, _) = ctx.MatchMessage(false);
if (referencedMessage != null) if (referencedMessage != null)
{ {
await using var conn = await ctx.Database.Obtain();
msg = await ctx.Repository.GetMessage(conn, referencedMessage.Value); msg = await ctx.Repository.GetMessage(conn, referencedMessage.Value);
if (msg == null) if (msg == null)
throw new PKError("This is not a message proxied by PluralKit."); throw new PKError("This is not a message proxied by PluralKit.");
@ -161,6 +160,7 @@ public class ProxiedMessage
if (recent == null) if (recent == null)
throw new PKSyntaxError($"Could not find a recent message to {editType}."); throw new PKSyntaxError($"Could not find a recent message to {editType}.");
await using var conn = await ctx.Database.Obtain();
msg = await ctx.Repository.GetMessage(conn, recent.Mid); msg = await ctx.Repository.GetMessage(conn, recent.Mid);
if (msg == null) if (msg == null)
throw new PKSyntaxError($"Could not find a recent message to {editType}."); throw new PKSyntaxError($"Could not find a recent message to {editType}.");

View File

@ -211,16 +211,17 @@ public class ProxyService
{ {
Member = member, Member = member,
Content = prevMatched ? prevMatch.Content : originalMsg.Content, Content = prevMatched ? prevMatch.Content : originalMsg.Content,
ProxyTags = member.ProxyTags.First(), ProxyTags = member.ProxyTags.FirstOrDefault(),
}; };
var messageChannel = await _rest.GetChannelOrNull(msg.Channel!); var messageChannel = await _rest.GetChannelOrNull(msg.Channel!);
var rootChannel = await _rest.GetChannelOrNull(messageChannel.IsThread() ? messageChannel.ParentId!.Value : messageChannel.Id); var rootChannel = messageChannel.IsThread() ? await _rest.GetChannelOrNull(messageChannel.ParentId!.Value) : messageChannel;
var threadId = messageChannel.IsThread() ? messageChannel.Id : (ulong?)null; var threadId = messageChannel.IsThread() ? messageChannel.Id : (ulong?)null;
var guild = await _rest.GetGuildOrNull(msg.Guild!.Value); var guild = await _rest.GetGuildOrNull(msg.Guild!.Value);
var guildMember = await _rest.GetGuildMember(msg.Guild!.Value, trigger.Author.Id);
// Grab user permissions // Grab user permissions
var senderPermissions = PermissionExtensions.PermissionsFor(guild, rootChannel, trigger.Author.Id, null); var senderPermissions = PermissionExtensions.PermissionsFor(guild, rootChannel, trigger.Author.Id, guildMember);
var allowEveryone = senderPermissions.HasFlag(PermissionSet.MentionEveryone); var allowEveryone = senderPermissions.HasFlag(PermissionSet.MentionEveryone);
// Make sure user has permissions to send messages // Make sure user has permissions to send messages
@ -373,8 +374,8 @@ public class ProxyService
{ {
var sentMessage = new PKMessage var sentMessage = new PKMessage
{ {
Channel = triggerMessage.ChannelId, Channel = proxyMessage.ChannelId,
Guild = triggerMessage.GuildId, Guild = proxyMessage.GuildId,
Member = match.Member.Id, Member = match.Member.Id,
Mid = proxyMessage.Id, Mid = proxyMessage.Id,
OriginalMid = triggerMessage.Id, OriginalMid = triggerMessage.Id,

View File

@ -86,7 +86,7 @@ public class LogChannelService
{ {
_logger.Information( _logger.Information(
"Does not have permission to log proxy, ignoring (channel: {ChannelId}, guild: {GuildId}, bot permissions: {BotPermissions})", "Does not have permission to log proxy, ignoring (channel: {ChannelId}, guild: {GuildId}, bot permissions: {BotPermissions})",
logChannel.Id, trigger.GuildId!.Value, perms); logChannel.Id, guildId, perms);
return null; return null;
} }

View File

@ -174,7 +174,8 @@ public class WebhookExecutorService
// We don't care about whether the sending succeeds, and we don't want to *wait* for it, so we just fork it off // We don't care about whether the sending succeeds, and we don't want to *wait* for it, so we just fork it off
var _ = TrySendRemainingAttachments(webhook, req.Name, req.AvatarUrl, attachmentChunks, req.ThreadId); var _ = TrySendRemainingAttachments(webhook, req.Name, req.AvatarUrl, attachmentChunks, req.ThreadId);
return webhookMessage; // for some reason discord may(?) return a null guildid here???
return webhookMessage with { GuildId = webhookMessage.GuildId ?? req.GuildId };
} }
private async Task TrySendRemainingAttachments(Webhook webhook, string name, string avatarUrl, private async Task TrySendRemainingAttachments(Webhook webhook, string name, string avatarUrl,

View File

@ -40,15 +40,26 @@
} }
if (data.birthday) { if (data.birthday) {
if (!moment(data.birthday, 'YYYY-MM-DD').isValid()) { let allowedFormats = ['YYYY-MM-DD','YYYY-M-D', 'YYYY-MM-D', 'YYYY-M-DD'];
if (moment(data.birthday, 'MM-DD').isValid()) {
data.birthday = '0004-' + data.birthday; // replace all brackets with dashes
} else {
err.push(`${data.birthday} is not a valid date, please use the following format: YYYY-MM-DD. (example: 2019-07-21)`);
}
}
if (data.birthday.includes('/')) { if (data.birthday.includes('/')) {
data.birthday.replace('/', '-'); data.birthday = data.birthday.replaceAll('/', '-');
}
// add a generic year if there's no year included
// NOTE: for some reason moment parses a date with only a month and day as a YEAR and a month
// so I'm just checking by the amount of dashes in the string
if (data.birthday.split('-').length - 1 === 1) {
data.birthday = '0004-' + data.birthday;
}
// try matching the birthday to the YYYY-MM-DD format
if (moment(data.birthday, allowedFormats, true).isValid()) {
// convert the format to have months and days as double digits.
data.birthday = moment(data.birthday, 'YYYY-MM-DD').format('YYYY-MM-DD');
} else {
err.push(`${data.birthday} is not a valid date, please use the following format: YYYY-MM-DD. (example: 2019-07-21)`);
} }
} }

View File

@ -59,15 +59,26 @@
} }
if (data.birthday) { if (data.birthday) {
if (!moment(data.birthday, 'YYYY-MM-DD').isValid()) { let allowedFormats = ['YYYY-MM-DD','YYYY-M-D', 'YYYY-MM-D', 'YYYY-M-DD'];
if (moment(data.birthday, 'MM-DD').isValid()) {
data.birthday = '0004-' + data.birthday; // replace all brackets with dashes
} else {
err.push(`${data.birthday} is not a valid date, please use the following format: YYYY-MM-DD. (example: 2019-07-21)`);
}
}
if (data.birthday.includes('/')) { if (data.birthday.includes('/')) {
data.birthday.replace('/', '-'); data.birthday = data.birthday.replaceAll('/', '-');
}
// add a generic year if there's no year included
// NOTE: for some reason moment parses a date with only a month and day as a YEAR and a month
// so I'm just checking by the amount of dashes in the string
if (data.birthday.split('-').length - 1 === 1) {
data.birthday = '0004-' + data.birthday;
}
// try matching the birthday to the YYYY-MM-DD format
if (moment(data.birthday, allowedFormats, true).isValid()) {
// convert the format to have months and days as double digits.
data.birthday = moment(data.birthday, 'YYYY-MM-DD').format('YYYY-MM-DD');
} else {
err.push(`${data.birthday} is not a valid date, please use the following format: YYYY-MM-DD. (example: 2019-07-21)`);
} }
} }

View File

@ -67,8 +67,7 @@ module.exports = {
"/api/endpoints", "/api/endpoints",
"/api/models", "/api/models",
"/api/errors", "/api/errors",
"/api/dispatch", "/api/dispatch"
"/api/legacy"
] ]
}, },
["https://discord.gg/PczBt78", "Join the support server"], ["https://discord.gg/PczBt78", "Join the support server"],