mirror of
https://github.com/PluralKit/PluralKit.git
synced 2026-02-04 04:56:49 +00:00
Create methods to find guilds and channels in cache
This commit is contained in:
parent
94076dc9be
commit
56e4f1c00c
1 changed files with 22 additions and 0 deletions
|
|
@ -256,6 +256,28 @@ namespace PluralKit.Bot
|
|||
public static Task<DiscordMessage> GetMessage(this DiscordRestClient client, ulong channel, ulong message) =>
|
||||
WrapDiscordCall(client.GetMessageAsync(channel, message));
|
||||
|
||||
public static DiscordGuild GetGuild(this DiscordShardedClient client, ulong id)
|
||||
{
|
||||
DiscordGuild guild;
|
||||
foreach (DiscordClient shard in client.ShardClients.Values)
|
||||
{
|
||||
shard.Guilds.TryGetValue(id, out guild);
|
||||
if (guild != null) return guild;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static async Task<DiscordChannel> GetChannel(this DiscordShardedClient client, ulong id, ulong? guildId = null)
|
||||
{
|
||||
// we need to know the channel's guild ID to get the cached guild object, so we grab it from the API
|
||||
if (guildId == null) {
|
||||
var guild = await WrapDiscordCall(client.ShardClients.Values.FirstOrDefault().GetChannelAsync(id));
|
||||
if (guild != null) guildId = guild.Id;
|
||||
else return null; // we probably don't have the guild in cache if the API doesn't give it to us
|
||||
}
|
||||
return client.GetGuild(guildId.Value).GetChannel(id);
|
||||
}
|
||||
|
||||
private static async Task<T> WrapDiscordCall<T>(Task<T> t)
|
||||
where T: class
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue