Get rid of more D#+ references
This commit is contained in:
parent
04109a133f
commit
da9d84a197
@ -143,5 +143,11 @@ namespace Myriad.Extensions
|
|||||||
PermissionSet.SendTtsMessages |
|
PermissionSet.SendTtsMessages |
|
||||||
PermissionSet.AttachFiles |
|
PermissionSet.AttachFiles |
|
||||||
PermissionSet.EmbedLinks;
|
PermissionSet.EmbedLinks;
|
||||||
|
|
||||||
|
public static string ToPermissionString(this PermissionSet perms)
|
||||||
|
{
|
||||||
|
// TODO: clean string
|
||||||
|
return perms.ToString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -27,6 +27,7 @@ namespace Myriad.Gateway
|
|||||||
private Task _worker;
|
private Task _worker;
|
||||||
|
|
||||||
public ShardInfo? ShardInfo { get; private set; }
|
public ShardInfo? ShardInfo { get; private set; }
|
||||||
|
public int ShardId => ShardInfo?.ShardId ?? 0;
|
||||||
public GatewaySettings Settings { get; }
|
public GatewaySettings Settings { get; }
|
||||||
public ShardSessionInfo SessionInfo { get; private set; }
|
public ShardSessionInfo SessionInfo { get; private set; }
|
||||||
public ShardState State { get; private set; }
|
public ShardState State { get; private set; }
|
||||||
|
@ -46,8 +46,8 @@ namespace Myriad.Rest
|
|||||||
_client.Get<GuildMember>($"/guilds/{guildId}/members/{userId}",
|
_client.Get<GuildMember>($"/guilds/{guildId}/members/{userId}",
|
||||||
("GetGuildMember", guildId));
|
("GetGuildMember", guildId));
|
||||||
|
|
||||||
public Task<Message> CreateMessage(ulong channelId, MessageRequest request) =>
|
public Task<Message> CreateMessage(ulong channelId, MessageRequest request, MultipartFile[]? files = null) =>
|
||||||
_client.Post<Message>($"/channels/{channelId}/messages", ("CreateMessage", channelId), request)!;
|
_client.PostMultipart<Message>($"/channels/{channelId}/messages", ("CreateMessage", channelId), request, files)!;
|
||||||
|
|
||||||
public Task<Message> EditMessage(ulong channelId, ulong messageId, MessageEditRequest request) =>
|
public Task<Message> EditMessage(ulong channelId, ulong messageId, MessageEditRequest request) =>
|
||||||
_client.Patch<Message>($"/channels/{channelId}/messages/{messageId}", ("EditMessage", channelId), request)!;
|
_client.Patch<Message>($"/channels/{channelId}/messages/{messageId}", ("EditMessage", channelId), request)!;
|
||||||
|
@ -1,39 +1,31 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
using App.Metrics;
|
using App.Metrics;
|
||||||
|
|
||||||
using Autofac;
|
using Autofac;
|
||||||
|
|
||||||
using DSharpPlus;
|
|
||||||
using DSharpPlus.Entities;
|
|
||||||
|
|
||||||
using Myriad.Cache;
|
using Myriad.Cache;
|
||||||
using Myriad.Extensions;
|
using Myriad.Extensions;
|
||||||
using Myriad.Gateway;
|
using Myriad.Gateway;
|
||||||
|
using Myriad.Rest;
|
||||||
using Myriad.Rest.Types;
|
using Myriad.Rest.Types;
|
||||||
using Myriad.Rest.Types.Requests;
|
using Myriad.Rest.Types.Requests;
|
||||||
using Myriad.Types;
|
using Myriad.Types;
|
||||||
|
|
||||||
using PluralKit.Core;
|
using PluralKit.Core;
|
||||||
|
|
||||||
using DiscordApiClient = Myriad.Rest.DiscordApiClient;
|
|
||||||
|
|
||||||
namespace PluralKit.Bot
|
namespace PluralKit.Bot
|
||||||
{
|
{
|
||||||
public class Context
|
public class Context
|
||||||
{
|
{
|
||||||
private readonly ILifetimeScope _provider;
|
private readonly ILifetimeScope _provider;
|
||||||
|
|
||||||
private readonly DiscordRestClient _rest;
|
|
||||||
private readonly DiscordApiClient _newRest;
|
private readonly DiscordApiClient _newRest;
|
||||||
private readonly DiscordShardedClient _client;
|
private readonly Cluster _cluster;
|
||||||
private readonly DiscordClient _shard = null;
|
|
||||||
private readonly Shard _shardNew;
|
private readonly Shard _shardNew;
|
||||||
private readonly Guild? _guild;
|
private readonly Guild? _guild;
|
||||||
private readonly Channel _channel;
|
private readonly Channel _channel;
|
||||||
private readonly DiscordMessage _message = null;
|
|
||||||
private readonly MessageCreateEvent _messageNew;
|
private readonly MessageCreateEvent _messageNew;
|
||||||
private readonly Parameters _parameters;
|
private readonly Parameters _parameters;
|
||||||
private readonly MessageContext _messageContext;
|
private readonly MessageContext _messageContext;
|
||||||
@ -52,8 +44,6 @@ namespace PluralKit.Bot
|
|||||||
public Context(ILifetimeScope provider, Shard shard, Guild? guild, Channel channel, MessageCreateEvent message, int commandParseOffset,
|
public Context(ILifetimeScope provider, Shard shard, Guild? guild, Channel channel, MessageCreateEvent message, int commandParseOffset,
|
||||||
PKSystem senderSystem, MessageContext messageContext, PermissionSet botPermissions)
|
PKSystem senderSystem, MessageContext messageContext, PermissionSet botPermissions)
|
||||||
{
|
{
|
||||||
_rest = provider.Resolve<DiscordRestClient>();
|
|
||||||
_client = provider.Resolve<DiscordShardedClient>();
|
|
||||||
_messageNew = message;
|
_messageNew = message;
|
||||||
_shardNew = shard;
|
_shardNew = shard;
|
||||||
_guild = guild;
|
_guild = guild;
|
||||||
@ -66,8 +56,9 @@ namespace PluralKit.Bot
|
|||||||
_metrics = provider.Resolve<IMetrics>();
|
_metrics = provider.Resolve<IMetrics>();
|
||||||
_provider = provider;
|
_provider = provider;
|
||||||
_commandMessageService = provider.Resolve<CommandMessageService>();
|
_commandMessageService = provider.Resolve<CommandMessageService>();
|
||||||
_parameters = new Parameters(message.Content.Substring(commandParseOffset));
|
_parameters = new Parameters(message.Content?.Substring(commandParseOffset));
|
||||||
_newRest = provider.Resolve<DiscordApiClient>();
|
_newRest = provider.Resolve<DiscordApiClient>();
|
||||||
|
_cluster = provider.Resolve<Cluster>();
|
||||||
|
|
||||||
_botPermissions = botPermissions;
|
_botPermissions = botPermissions;
|
||||||
_userPermissions = _cache.PermissionsFor(message);
|
_userPermissions = _cache.PermissionsFor(message);
|
||||||
@ -75,23 +66,19 @@ namespace PluralKit.Bot
|
|||||||
|
|
||||||
public IDiscordCache Cache => _cache;
|
public IDiscordCache Cache => _cache;
|
||||||
|
|
||||||
public DiscordUser Author => _message.Author;
|
|
||||||
public DiscordChannel Channel => _message.Channel;
|
|
||||||
public Channel ChannelNew => _channel;
|
public Channel ChannelNew => _channel;
|
||||||
public User AuthorNew => _messageNew.Author;
|
public User AuthorNew => _messageNew.Author;
|
||||||
public GuildMemberPartial MemberNew => _messageNew.Member;
|
public GuildMemberPartial MemberNew => _messageNew.Member;
|
||||||
public DiscordMessage Message => _message;
|
|
||||||
public Message MessageNew => _messageNew;
|
public Message MessageNew => _messageNew;
|
||||||
public DiscordGuild Guild => _message.Channel.Guild;
|
|
||||||
public Guild GuildNew => _guild;
|
public Guild GuildNew => _guild;
|
||||||
public DiscordClient Shard => _shard;
|
public Shard ShardNew => _shardNew;
|
||||||
public DiscordShardedClient Client => _client;
|
public Cluster Cluster => _cluster;
|
||||||
public MessageContext MessageContext => _messageContext;
|
public MessageContext MessageContext => _messageContext;
|
||||||
|
|
||||||
public PermissionSet BotPermissions => _botPermissions;
|
public PermissionSet BotPermissions => _botPermissions;
|
||||||
public PermissionSet UserPermissions => _userPermissions;
|
public PermissionSet UserPermissions => _userPermissions;
|
||||||
|
|
||||||
public DiscordRestClient Rest => _rest;
|
|
||||||
public DiscordApiClient RestNew => _newRest;
|
public DiscordApiClient RestNew => _newRest;
|
||||||
|
|
||||||
public PKSystem System => _senderSystem;
|
public PKSystem System => _senderSystem;
|
||||||
|
@ -129,7 +129,7 @@ namespace PluralKit.Bot
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!ctx.MessageContext.AllowAutoproxy)
|
if (!ctx.MessageContext.AllowAutoproxy)
|
||||||
eb.Field(new("\u200b", $"{Emojis.Note} Autoproxy is currently **disabled** for your account (<@{ctx.Author.Id}>). To enable it, use `pk;autoproxy account enable`."));
|
eb.Field(new("\u200b", $"{Emojis.Note} Autoproxy is currently **disabled** for your account (<@{ctx.AuthorNew.Id}>). To enable it, use `pk;autoproxy account enable`."));
|
||||||
|
|
||||||
return eb.Build();
|
return eb.Build();
|
||||||
}
|
}
|
||||||
@ -191,7 +191,7 @@ namespace PluralKit.Bot
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
var statusString = ctx.MessageContext.AllowAutoproxy ? "enabled" : "disabled";
|
var statusString = ctx.MessageContext.AllowAutoproxy ? "enabled" : "disabled";
|
||||||
await ctx.Reply($"Autoproxy is currently **{statusString}** for account <@{ctx.Author.Id}>.");
|
await ctx.Reply($"Autoproxy is currently **{statusString}** for account <@{ctx.AuthorNew.Id}>.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -200,12 +200,12 @@ namespace PluralKit.Bot
|
|||||||
var statusString = allow ? "enabled" : "disabled";
|
var statusString = allow ? "enabled" : "disabled";
|
||||||
if (ctx.MessageContext.AllowAutoproxy == allow)
|
if (ctx.MessageContext.AllowAutoproxy == allow)
|
||||||
{
|
{
|
||||||
await ctx.Reply($"{Emojis.Note} Autoproxy is already {statusString} for account <@{ctx.Author.Id}>.");
|
await ctx.Reply($"{Emojis.Note} Autoproxy is already {statusString} for account <@{ctx.AuthorNew.Id}>.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var patch = new AccountPatch { AllowAutoproxy = allow };
|
var patch = new AccountPatch { AllowAutoproxy = allow };
|
||||||
await _db.Execute(conn => _repo.UpdateAccount(conn, ctx.Author.Id, patch));
|
await _db.Execute(conn => _repo.UpdateAccount(conn, ctx.AuthorNew.Id, patch));
|
||||||
await ctx.Reply($"{Emojis.Success} Autoproxy {statusString} for account <@{ctx.Author.Id}>.");
|
await ctx.Reply($"{Emojis.Success} Autoproxy {statusString} for account <@{ctx.AuthorNew.Id}>.");
|
||||||
}
|
}
|
||||||
|
|
||||||
private Task UpdateAutoproxy(Context ctx, AutoproxyMode autoproxyMode, MemberId? autoproxyMember)
|
private Task UpdateAutoproxy(Context ctx, AutoproxyMode autoproxyMode, MemberId? autoproxyMember)
|
||||||
|
@ -524,7 +524,7 @@ namespace PluralKit.Bot
|
|||||||
{
|
{
|
||||||
// Try to resolve the user ID to find the associated account,
|
// Try to resolve the user ID to find the associated account,
|
||||||
// so we can print their username.
|
// so we can print their username.
|
||||||
var user = await ctx.Shard.GetUser(id);
|
var user = await ctx.RestNew.GetUser(id);
|
||||||
if (user != null)
|
if (user != null)
|
||||||
return $"Account **{user.Username}#{user.Discriminator}** does not have a system registered.";
|
return $"Account **{user.Username}#{user.Discriminator}** does not have a system registered.";
|
||||||
else
|
else
|
||||||
|
@ -20,7 +20,7 @@ namespace PluralKit.Bot
|
|||||||
.Field(new("More information", "For a full list of commands, see [the command list](https://pluralkit.me/commands).\nFor a more in-depth explanation of message proxying, see [the documentation](https://pluralkit.me/guide#proxying).\nIf you're an existing user of Tupperbox, type `pk;import` and attach a Tupperbox export file (from `tul!export`) to import your data from there."))
|
.Field(new("More information", "For a full list of commands, see [the command list](https://pluralkit.me/commands).\nFor a more in-depth explanation of message proxying, see [the documentation](https://pluralkit.me/guide#proxying).\nIf you're an existing user of Tupperbox, type `pk;import` and attach a Tupperbox export file (from `tul!export`) to import your data from there."))
|
||||||
.Field(new("Support server", "We also have a Discord server for support, discussion, suggestions, announcements, etc: https://discord.gg/PczBt78"))
|
.Field(new("Support server", "We also have a Discord server for support, discussion, suggestions, announcements, etc: https://discord.gg/PczBt78"))
|
||||||
.Footer(new($"By @Ske#6201 | Myriad by @Layl#8888 | GitHub: https://github.com/xSke/PluralKit/ | Website: https://pluralkit.me/"))
|
.Footer(new($"By @Ske#6201 | Myriad by @Layl#8888 | GitHub: https://github.com/xSke/PluralKit/ | Website: https://pluralkit.me/"))
|
||||||
.Color((uint?) DiscordUtils.Blue.Value)
|
.Color(DiscordUtils.Blue)
|
||||||
.Build());
|
.Build());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,6 +6,8 @@ using System.Text;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
using Myriad.Rest.Exceptions;
|
using Myriad.Rest.Exceptions;
|
||||||
|
using Myriad.Rest.Types;
|
||||||
|
using Myriad.Rest.Types.Requests;
|
||||||
using Myriad.Types;
|
using Myriad.Types;
|
||||||
|
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
@ -32,7 +34,7 @@ namespace PluralKit.Bot
|
|||||||
|
|
||||||
public async Task Import(Context ctx)
|
public async Task Import(Context ctx)
|
||||||
{
|
{
|
||||||
var url = ctx.RemainderOrNull() ?? ctx.Message.Attachments.FirstOrDefault()?.Url;
|
var url = ctx.RemainderOrNull() ?? ctx.MessageNew.Attachments.FirstOrDefault()?.Url;
|
||||||
if (url == null) throw Errors.NoImportFilePassed;
|
if (url == null) throw Errors.NoImportFilePassed;
|
||||||
|
|
||||||
await ctx.BusyIndicator(async () =>
|
await ctx.BusyIndicator(async () =>
|
||||||
@ -67,7 +69,7 @@ namespace PluralKit.Bot
|
|||||||
if (!data.Valid)
|
if (!data.Valid)
|
||||||
throw Errors.InvalidImportFile;
|
throw Errors.InvalidImportFile;
|
||||||
|
|
||||||
if (data.LinkedAccounts != null && !data.LinkedAccounts.Contains(ctx.Author.Id))
|
if (data.LinkedAccounts != null && !data.LinkedAccounts.Contains(ctx.AuthorNew.Id))
|
||||||
{
|
{
|
||||||
var msg = $"{Emojis.Warn} You seem to importing a system profile belonging to another account. Are you sure you want to proceed?";
|
var msg = $"{Emojis.Warn} You seem to importing a system profile belonging to another account. Are you sure you want to proceed?";
|
||||||
if (!await ctx.PromptYesNo(msg)) throw Errors.ImportCancelled;
|
if (!await ctx.PromptYesNo(msg)) throw Errors.ImportCancelled;
|
||||||
@ -75,7 +77,7 @@ namespace PluralKit.Bot
|
|||||||
|
|
||||||
// If passed system is null, it'll create a new one
|
// If passed system is null, it'll create a new one
|
||||||
// (and that's okay!)
|
// (and that's okay!)
|
||||||
var result = await _dataFiles.ImportSystem(data, ctx.System, ctx.Author.Id);
|
var result = await _dataFiles.ImportSystem(data, ctx.System, ctx.AuthorNew.Id);
|
||||||
if (!result.Success)
|
if (!result.Success)
|
||||||
await ctx.Reply($"{Emojis.Error} The provided system profile could not be imported. {result.Message}");
|
await ctx.Reply($"{Emojis.Error} The provided system profile could not be imported. {result.Message}");
|
||||||
else if (ctx.System == null)
|
else if (ctx.System == null)
|
||||||
@ -141,13 +143,16 @@ namespace PluralKit.Bot
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var dm = await ctx.Rest.CreateDmAsync(ctx.AuthorNew.Id);
|
var dm = await ctx.RestNew.CreateDm(ctx.AuthorNew.Id);
|
||||||
// TODO: send file
|
// TODO: send file
|
||||||
var msg = await dm.SendFileAsync("system.json", stream, $"{Emojis.Success} Here you go!");
|
|
||||||
await dm.SendMessageAsync($"<{msg.Attachments[0].Url}>");
|
var msg = await ctx.RestNew.CreateMessage(dm.Id,
|
||||||
|
new MessageRequest {Content = $"{Emojis.Success} Here you go!"},
|
||||||
|
new[] {new MultipartFile("system.json", stream)});
|
||||||
|
await ctx.RestNew.CreateMessage(dm.Id, new MessageRequest { Content = $"<{msg.Attachments[0].Url}>" });
|
||||||
|
|
||||||
// If the original message wasn't posted in DMs, send a public reminder
|
// If the original message wasn't posted in DMs, send a public reminder
|
||||||
if (ctx.ChannelNew.Type == Channel.ChannelType.Dm)
|
if (ctx.ChannelNew.Type != Channel.ChannelType.Dm)
|
||||||
await ctx.Reply($"{Emojis.Success} Check your DMs!");
|
await ctx.Reply($"{Emojis.Success} Check your DMs!");
|
||||||
}
|
}
|
||||||
catch (UnauthorizedException)
|
catch (UnauthorizedException)
|
||||||
|
@ -5,8 +5,6 @@ using System.Web;
|
|||||||
|
|
||||||
using Dapper;
|
using Dapper;
|
||||||
|
|
||||||
using DSharpPlus.Entities;
|
|
||||||
|
|
||||||
using Myriad.Builders;
|
using Myriad.Builders;
|
||||||
|
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
@ -92,7 +90,7 @@ namespace PluralKit.Bot
|
|||||||
var scream = data["soulscream"]!.Value<string>();
|
var scream = data["soulscream"]!.Value<string>();
|
||||||
|
|
||||||
var eb = new EmbedBuilder()
|
var eb = new EmbedBuilder()
|
||||||
.Color((uint?) DiscordColor.Red.Value)
|
.Color(DiscordUtils.Red)
|
||||||
.Title(name)
|
.Title(name)
|
||||||
.Url($"https://onomancer.sibr.dev/reflect?name={encoded}")
|
.Url($"https://onomancer.sibr.dev/reflect?name={encoded}")
|
||||||
.Description($"*{scream}*");
|
.Description($"*{scream}*");
|
||||||
|
@ -160,7 +160,7 @@ namespace PluralKit.Bot
|
|||||||
else
|
else
|
||||||
await ctx.Reply(embed: new EmbedBuilder()
|
await ctx.Reply(embed: new EmbedBuilder()
|
||||||
.Title("Member color")
|
.Title("Member color")
|
||||||
.Color((uint?) target.Color.ToDiscordColor()!.Value.Value)
|
.Color(target.Color.ToDiscordColor())
|
||||||
.Thumbnail(new($"https://fakeimg.pl/256x256/{target.Color}/?text=%20"))
|
.Thumbnail(new($"https://fakeimg.pl/256x256/{target.Color}/?text=%20"))
|
||||||
.Description($"This member's color is **#{target.Color}**."
|
.Description($"This member's color is **#{target.Color}**."
|
||||||
+ (ctx.System?.Id == target.System ? $" To clear it, type `pk;member {target.Reference()} color -clear`." : ""))
|
+ (ctx.System?.Id == target.System ? $" To clear it, type `pk;member {target.Reference()} color -clear`." : ""))
|
||||||
@ -178,7 +178,7 @@ namespace PluralKit.Bot
|
|||||||
|
|
||||||
await ctx.Reply(embed: new EmbedBuilder()
|
await ctx.Reply(embed: new EmbedBuilder()
|
||||||
.Title($"{Emojis.Success} Member color changed.")
|
.Title($"{Emojis.Success} Member color changed.")
|
||||||
.Color((uint?) color.ToDiscordColor()!.Value.Value)
|
.Color(color.ToDiscordColor())
|
||||||
.Thumbnail(new($"https://fakeimg.pl/256x256/{color}/?text=%20"))
|
.Thumbnail(new($"https://fakeimg.pl/256x256/{color}/?text=%20"))
|
||||||
.Build());
|
.Build());
|
||||||
}
|
}
|
||||||
|
@ -6,8 +6,6 @@ using System.Threading.Tasks;
|
|||||||
|
|
||||||
using App.Metrics;
|
using App.Metrics;
|
||||||
|
|
||||||
using DSharpPlus;
|
|
||||||
|
|
||||||
using Humanizer;
|
using Humanizer;
|
||||||
|
|
||||||
using NodaTime;
|
using NodaTime;
|
||||||
@ -22,8 +20,6 @@ using Myriad.Rest;
|
|||||||
using Myriad.Rest.Types.Requests;
|
using Myriad.Rest.Types.Requests;
|
||||||
using Myriad.Types;
|
using Myriad.Types;
|
||||||
|
|
||||||
using Permissions = DSharpPlus.Permissions;
|
|
||||||
|
|
||||||
namespace PluralKit.Bot {
|
namespace PluralKit.Bot {
|
||||||
public class Misc
|
public class Misc
|
||||||
{
|
{
|
||||||
@ -89,10 +85,10 @@ namespace PluralKit.Bot {
|
|||||||
var totalMessages = _metrics.Snapshot.GetForContext("Application").Gauges.FirstOrDefault(m => m.MultidimensionalName == CoreMetrics.MessageCount.Name)?.Value ?? 0;
|
var totalMessages = _metrics.Snapshot.GetForContext("Application").Gauges.FirstOrDefault(m => m.MultidimensionalName == CoreMetrics.MessageCount.Name)?.Value ?? 0;
|
||||||
|
|
||||||
// TODO: shard stuff
|
// TODO: shard stuff
|
||||||
var shardId = ctx.Shard.ShardId;
|
var shardId = ctx.ShardNew.ShardInfo?.ShardId ?? -1;
|
||||||
var shardTotal = ctx.Client.ShardClients.Count;
|
var shardTotal = ctx.Cluster.Shards.Count;
|
||||||
var shardUpTotal = _shards.Shards.Where(x => x.Connected).Count();
|
var shardUpTotal = _shards.Shards.Where(x => x.Connected).Count();
|
||||||
var shardInfo = _shards.GetShardInfo(ctx.Shard);
|
var shardInfo = _shards.GetShardInfo(ctx.ShardNew);
|
||||||
|
|
||||||
var process = Process.GetCurrentProcess();
|
var process = Process.GetCurrentProcess();
|
||||||
var memoryUsage = process.WorkingSet64;
|
var memoryUsage = process.WorkingSet64;
|
||||||
@ -188,7 +184,7 @@ namespace PluralKit.Bot {
|
|||||||
|
|
||||||
if (permissionsMissing.Count == 0)
|
if (permissionsMissing.Count == 0)
|
||||||
{
|
{
|
||||||
eb.Description($"No errors found, all channels proxyable :)").Color((uint?) DiscordUtils.Green.Value);
|
eb.Description($"No errors found, all channels proxyable :)").Color(DiscordUtils.Green);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -196,14 +192,13 @@ namespace PluralKit.Bot {
|
|||||||
{
|
{
|
||||||
// Each missing permission field can have multiple missing channels
|
// Each missing permission field can have multiple missing channels
|
||||||
// so we extract them all and generate a comma-separated list
|
// so we extract them all and generate a comma-separated list
|
||||||
// TODO: port ToPermissionString?
|
var missingPermissionNames = ((PermissionSet) missingPermissionField).ToPermissionString();
|
||||||
var missingPermissionNames = ((Permissions)missingPermissionField).ToPermissionString();
|
|
||||||
|
|
||||||
var channelsList = string.Join("\n", channels
|
var channelsList = string.Join("\n", channels
|
||||||
.OrderBy(c => c.Position)
|
.OrderBy(c => c.Position)
|
||||||
.Select(c => $"#{c.Name}"));
|
.Select(c => $"#{c.Name}"));
|
||||||
eb.Field(new($"Missing *{missingPermissionNames}*", channelsList.Truncate(1000)));
|
eb.Field(new($"Missing *{missingPermissionNames}*", channelsList.Truncate(1000)));
|
||||||
eb.Color((uint?) DiscordUtils.Red.Value);
|
eb.Color(DiscordUtils.Red);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ namespace PluralKit.Bot
|
|||||||
var system = _db.Execute(async c =>
|
var system = _db.Execute(async c =>
|
||||||
{
|
{
|
||||||
var system = await _repo.CreateSystem(c, systemName);
|
var system = await _repo.CreateSystem(c, systemName);
|
||||||
await _repo.AddAccount(c, system.Id, ctx.Author.Id);
|
await _repo.AddAccount(c, system.Id, ctx.AuthorNew.Id);
|
||||||
return system;
|
return system;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ namespace PluralKit.Bot
|
|||||||
|
|
||||||
ulong id;
|
ulong id;
|
||||||
if (!ctx.HasNext())
|
if (!ctx.HasNext())
|
||||||
id = ctx.Author.Id;
|
id = ctx.AuthorNew.Id;
|
||||||
else if (!ctx.MatchUserRaw(out id))
|
else if (!ctx.MatchUserRaw(out id))
|
||||||
throw new PKSyntaxError("You must pass an account to link with (either ID or @mention).");
|
throw new PKSyntaxError("You must pass an account to link with (either ID or @mention).");
|
||||||
|
|
||||||
|
@ -3,8 +3,6 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
using DSharpPlus.Entities;
|
|
||||||
|
|
||||||
using Humanizer;
|
using Humanizer;
|
||||||
|
|
||||||
using Myriad.Builders;
|
using Myriad.Builders;
|
||||||
@ -58,7 +56,7 @@ namespace PluralKit.Bot {
|
|||||||
.Title(system.Name)
|
.Title(system.Name)
|
||||||
.Thumbnail(new(system.AvatarUrl))
|
.Thumbnail(new(system.AvatarUrl))
|
||||||
.Footer(new($"System ID: {system.Hid} | Created on {system.Created.FormatZoned(system)}"))
|
.Footer(new($"System ID: {system.Hid} | Created on {system.Created.FormatZoned(system)}"))
|
||||||
.Color((uint) DiscordUtils.Gray.Value);
|
.Color(DiscordUtils.Gray);
|
||||||
|
|
||||||
var latestSwitch = await _repo.GetLatestSwitch(conn, system.Id);
|
var latestSwitch = await _repo.GetLatestSwitch(conn, system.Id);
|
||||||
if (latestSwitch != null && system.FrontPrivacy.CanAccess(ctx))
|
if (latestSwitch != null && system.FrontPrivacy.CanAccess(ctx))
|
||||||
@ -107,7 +105,7 @@ namespace PluralKit.Bot {
|
|||||||
var name = member.NameFor(ctx);
|
var name = member.NameFor(ctx);
|
||||||
if (system.Name != null) name = $"{name} ({system.Name})";
|
if (system.Name != null) name = $"{name} ({system.Name})";
|
||||||
|
|
||||||
DiscordColor color;
|
uint color;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
color = member.Color?.ToDiscordColor() ?? DiscordUtils.Gray;
|
color = member.Color?.ToDiscordColor() ?? DiscordUtils.Gray;
|
||||||
@ -135,7 +133,7 @@ namespace PluralKit.Bot {
|
|||||||
// TODO: add URL of website when that's up
|
// TODO: add URL of website when that's up
|
||||||
.Author(new(name, IconUrl: DiscordUtils.WorkaroundForUrlBug(avatar)))
|
.Author(new(name, IconUrl: DiscordUtils.WorkaroundForUrlBug(avatar)))
|
||||||
// .WithColor(member.ColorPrivacy.CanAccess(ctx) ? color : DiscordUtils.Gray)
|
// .WithColor(member.ColorPrivacy.CanAccess(ctx) ? color : DiscordUtils.Gray)
|
||||||
.Color((uint?) color.Value)
|
.Color(color)
|
||||||
.Footer(new(
|
.Footer(new(
|
||||||
$"System ID: {system.Hid} | Member ID: {member.Hid} {(member.MetadataPrivacy.CanAccess(ctx) ? $"| Created on {member.Created.FormatZoned(system)}" : "")}"));
|
$"System ID: {system.Hid} | Member ID: {member.Hid} {(member.MetadataPrivacy.CanAccess(ctx) ? $"| Created on {member.Created.FormatZoned(system)}" : "")}"));
|
||||||
|
|
||||||
@ -218,7 +216,7 @@ namespace PluralKit.Bot {
|
|||||||
var members = await _db.Execute(c => _repo.GetSwitchMembers(c, sw.Id).ToListAsync().AsTask());
|
var members = await _db.Execute(c => _repo.GetSwitchMembers(c, sw.Id).ToListAsync().AsTask());
|
||||||
var timeSinceSwitch = SystemClock.Instance.GetCurrentInstant() - sw.Timestamp;
|
var timeSinceSwitch = SystemClock.Instance.GetCurrentInstant() - sw.Timestamp;
|
||||||
return new EmbedBuilder()
|
return new EmbedBuilder()
|
||||||
.Color((uint?) (members.FirstOrDefault()?.Color?.ToDiscordColor()?.Value ?? DiscordUtils.Gray.Value))
|
.Color(members.FirstOrDefault()?.Color?.ToDiscordColor() ?? DiscordUtils.Gray)
|
||||||
.Field(new($"Current {"fronter".ToQuantity(members.Count, ShowQuantityAs.None)}", members.Count > 0 ? string.Join(", ", members.Select(m => m.NameFor(ctx))) : "*(no fronter)*"))
|
.Field(new($"Current {"fronter".ToQuantity(members.Count, ShowQuantityAs.None)}", members.Count > 0 ? string.Join(", ", members.Select(m => m.NameFor(ctx))) : "*(no fronter)*"))
|
||||||
.Field(new("Since", $"{sw.Timestamp.FormatZoned(zone)} ({timeSinceSwitch.FormatDuration()} ago)"))
|
.Field(new("Since", $"{sw.Timestamp.FormatZoned(zone)} ({timeSinceSwitch.FormatDuration()} ago)"))
|
||||||
.Build();
|
.Build();
|
||||||
@ -280,7 +278,7 @@ namespace PluralKit.Bot {
|
|||||||
{
|
{
|
||||||
var actualPeriod = breakdown.RangeEnd - breakdown.RangeStart;
|
var actualPeriod = breakdown.RangeEnd - breakdown.RangeStart;
|
||||||
var eb = new EmbedBuilder()
|
var eb = new EmbedBuilder()
|
||||||
.Color((uint?) DiscordUtils.Gray.Value)
|
.Color(DiscordUtils.Gray)
|
||||||
.Footer(new($"Since {breakdown.RangeStart.FormatZoned(tz)} ({actualPeriod.FormatDuration()} ago)"));
|
.Footer(new($"Since {breakdown.RangeStart.FormatZoned(tz)} ({actualPeriod.FormatDuration()} ago)"));
|
||||||
|
|
||||||
var maxEntriesToDisplay = 24; // max 25 fields allowed in embed - reserve 1 for "others"
|
var maxEntriesToDisplay = 24; // max 25 fields allowed in embed - reserve 1 for "others"
|
||||||
|
@ -7,6 +7,8 @@ using App.Metrics;
|
|||||||
using DSharpPlus;
|
using DSharpPlus;
|
||||||
using DSharpPlus.EventArgs;
|
using DSharpPlus.EventArgs;
|
||||||
|
|
||||||
|
using Myriad.Gateway;
|
||||||
|
|
||||||
using NodaTime;
|
using NodaTime;
|
||||||
using NodaTime.Extensions;
|
using NodaTime.Extensions;
|
||||||
|
|
||||||
@ -144,7 +146,7 @@ namespace PluralKit.Bot
|
|||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ShardInfo GetShardInfo(DiscordClient shard) => _shardInfo[shard.ShardId];
|
public ShardInfo GetShardInfo(Shard shard) => _shardInfo[shard.ShardId];
|
||||||
|
|
||||||
public ICollection<ShardInfo> Shards => _shardInfo.Values;
|
public ICollection<ShardInfo> Shards => _shardInfo.Values;
|
||||||
}
|
}
|
||||||
|
@ -88,7 +88,7 @@ namespace PluralKit.Bot {
|
|||||||
public static async Task<bool> ConfirmWithReply(this Context ctx, string expectedReply)
|
public static async Task<bool> ConfirmWithReply(this Context ctx, string expectedReply)
|
||||||
{
|
{
|
||||||
bool Predicate(MessageCreateEvent e) =>
|
bool Predicate(MessageCreateEvent e) =>
|
||||||
e.Author.Id == ctx.AuthorNew.Id && e.ChannelId == ctx.Channel.Id;
|
e.Author.Id == ctx.AuthorNew.Id && e.ChannelId == ctx.ChannelNew.Id;
|
||||||
|
|
||||||
var msg = await ctx.Services.Resolve<HandlerQueue<MessageCreateEvent>>()
|
var msg = await ctx.Services.Resolve<HandlerQueue<MessageCreateEvent>>()
|
||||||
.WaitFor(Predicate, Duration.FromMinutes(1));
|
.WaitFor(Predicate, Duration.FromMinutes(1));
|
||||||
@ -217,7 +217,7 @@ namespace PluralKit.Bot {
|
|||||||
if (idx < items.Count) return items[idx];
|
if (idx < items.Count) return items[idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
var __ = ctx.RestNew.DeleteUserReaction(msg.ChannelId, msg.Id, reaction.Emoji, ctx.Author.Id);
|
var __ = ctx.RestNew.DeleteUserReaction(msg.ChannelId, msg.Id, reaction.Emoji, ctx.AuthorNew.Id);
|
||||||
await ctx.RestNew.EditMessage(msg.ChannelId, msg.Id,
|
await ctx.RestNew.EditMessage(msg.ChannelId, msg.Id,
|
||||||
new()
|
new()
|
||||||
{
|
{
|
||||||
|
@ -28,10 +28,10 @@ namespace PluralKit.Bot
|
|||||||
{
|
{
|
||||||
public static class DiscordUtils
|
public static class DiscordUtils
|
||||||
{
|
{
|
||||||
public static DiscordColor Blue = new DiscordColor(0x1f99d8);
|
public const uint Blue = 0x1f99d8;
|
||||||
public static DiscordColor Green = new DiscordColor(0x00cc78);
|
public const uint Green = 0x00cc78;
|
||||||
public static DiscordColor Red = new DiscordColor(0xef4b3d);
|
public const uint Red = 0xef4b3d;
|
||||||
public static DiscordColor Gray = new DiscordColor(0x979c9f);
|
public const uint Gray = 0x979c9f;
|
||||||
|
|
||||||
public static Permissions DM_PERMISSIONS = (Permissions) 0b00000_1000110_1011100110000_000000;
|
public static Permissions DM_PERMISSIONS = (Permissions) 0b00000_1000110_1011100110000_000000;
|
||||||
|
|
||||||
@ -154,10 +154,10 @@ namespace PluralKit.Bot
|
|||||||
return cache != null && cache.TryGetValue(id, out user);
|
return cache != null && cache.TryGetValue(id, out user);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DiscordColor? ToDiscordColor(this string color)
|
public static uint? ToDiscordColor(this string color)
|
||||||
{
|
{
|
||||||
if (int.TryParse(color, NumberStyles.HexNumber, null, out var colorInt))
|
if (uint.TryParse(color, NumberStyles.HexNumber, null, out var colorInt))
|
||||||
return new DiscordColor(colorInt);
|
return colorInt;
|
||||||
throw new ArgumentException($"Invalid color string '{color}'.");
|
throw new ArgumentException($"Invalid color string '{color}'.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user