Switch to discord.net 3.0.0

This commit is contained in:
Kwoth
2021-12-23 08:02:23 +07:00
parent f78e4d457c
commit 93b8bca018
34 changed files with 159 additions and 384 deletions

View File

@@ -38,23 +38,6 @@ public static class Extensions
}),
_ => throw new ArgumentOutOfRangeException(nameof(text))
};
public static Task<IUserMessage> SendAsync(this IMessageChannel channel, string plainText, Embed embed, bool sanitizeAll = false)
{
plainText = sanitizeAll
? plainText?.SanitizeAllMentions() ?? ""
: plainText?.SanitizeMentions() ?? "";
return channel.SendMessageAsync(plainText, embed: embed);
}
public static Task<IUserMessage> SendAsync(this IMessageChannel channel, SmartText text, bool sanitizeAll = false)
=> text switch
{
SmartEmbedText set => channel.SendAsync(set.PlainText, set.GetEmbed().Build(), sanitizeAll),
SmartPlainText st => channel.SendAsync(st.Text, null, sanitizeAll),
_ => throw new ArgumentOutOfRangeException(nameof(text))
};
public static List<ulong> GetGuildIds(this DiscordSocketClient client)
=> client.Guilds.Select(x => x.Id).ToList();
@@ -334,10 +317,9 @@ public static class Extensions
public static async Task<IMessage> SendMessageToOwnerAsync(this IGuild guild, string message)
{
var ownerPrivate = await (await guild.GetOwnerAsync().ConfigureAwait(false)).GetOrCreateDMChannelAsync()
.ConfigureAwait(false);
var owner = await guild.GetOwnerAsync();
return await ownerPrivate.SendMessageAsync(message).ConfigureAwait(false);
return await owner.SendMessageAsync(message);
}
public static bool IsImage(this HttpResponseMessage msg) => IsImage(msg, out _);

View File

@@ -5,6 +5,23 @@ public static class IMessageChannelExtensions
public static Task<IUserMessage> EmbedAsync(this IMessageChannel ch, IEmbedBuilder embed, string msg = "")
=> ch.SendMessageAsync(msg, embed: embed.Build(),
options: new() { RetryMode = RetryMode.AlwaysRetry });
public static Task<IUserMessage> SendAsync(this IMessageChannel channel, string plainText, Embed embed, bool sanitizeAll = false)
{
plainText = sanitizeAll
? plainText?.SanitizeAllMentions() ?? ""
: plainText?.SanitizeMentions() ?? "";
return channel.SendMessageAsync(plainText, embed: embed);
}
public static Task<IUserMessage> SendAsync(this IMessageChannel channel, SmartText text, bool sanitizeAll = false)
=> text switch
{
SmartEmbedText set => channel.SendAsync(set.PlainText, set.GetEmbed().Build(), sanitizeAll),
SmartPlainText st => channel.SendAsync(st.Text, null, sanitizeAll),
_ => throw new ArgumentOutOfRangeException(nameof(text))
};
// this is a huge problem, because now i don't have
// access to embed builder service
@@ -97,7 +114,7 @@ public static class IMessageChannelExtensions
else if (addPaginatedFooter)
embed.AddPaginatedFooter(currentPage, lastPage);
var msg = await ctx.Channel.EmbedAsync(embed).ConfigureAwait(false) as IUserMessage;
var msg = await ctx.Channel.EmbedAsync(embed).ConfigureAwait(false);
if (lastPage == 0 || !canPaginate)
return;

View File

@@ -4,8 +4,26 @@ namespace NadekoBot.Extensions;
public static class IUserExtensions
{
public static async Task<IUserMessage> EmbedAsync(this IUser user, IEmbedBuilder embed, string msg = "")
{
var ch = await user.CreateDMChannelAsync();
return await ch.EmbedAsync(embed, msg);
}
public static async Task<IUserMessage> SendAsync(this IUser user, string plainText, Embed embed, bool sanitizeAll = false)
{
var ch = await user.CreateDMChannelAsync();
return await ch.SendAsync(plainText, embed, sanitizeAll);
}
public static async Task<IUserMessage> SendAsync(this IUser user, SmartText text, bool sanitizeAll = false)
{
var ch = await user.CreateDMChannelAsync();
return await ch.SendAsync(text, sanitizeAll);
}
public static async Task<IUserMessage> SendConfirmAsync(this IUser user, IEmbedBuilderService eb, string text)
=> await (await user.GetOrCreateDMChannelAsync()).SendMessageAsync("", embed: eb.Create()
=> await user.SendMessageAsync("", embed: eb.Create()
.WithOkColor()
.WithDescription(text)
.Build());
@@ -16,7 +34,7 @@ public static class IUserExtensions
if (url != null && Uri.IsWellFormedUriString(url, UriKind.Absolute))
embed.WithUrl(url);
return await (await user.GetOrCreateDMChannelAsync()).SendMessageAsync("", embed: embed.Build());
return await user.SendMessageAsync("", embed: embed.Build());
}
public static async Task<IUserMessage> SendErrorAsync(this IUser user, IEmbedBuilderService eb, string title, string error, string url = null)
@@ -25,11 +43,11 @@ public static class IUserExtensions
if (url != null && Uri.IsWellFormedUriString(url, UriKind.Absolute))
embed.WithUrl(url);
return await (await user.GetOrCreateDMChannelAsync().ConfigureAwait(false)).SendMessageAsync("", embed: embed.Build()).ConfigureAwait(false);
return await user.SendMessageAsync("", embed: embed.Build()).ConfigureAwait(false);
}
public static async Task<IUserMessage> SendErrorAsync(this IUser user, IEmbedBuilderService eb, string error)
=> await (await user.GetOrCreateDMChannelAsync())
=> await user
.SendMessageAsync("", embed: eb.Create()
.WithErrorColor()
.WithDescription(error)
@@ -39,12 +57,12 @@ public static class IUserExtensions
{
await using (var file = File.Open(filePath, FileMode.Open))
{
return await (await user.GetOrCreateDMChannelAsync().ConfigureAwait(false)).SendFileAsync(file, caption ?? "x", text, isTTS).ConfigureAwait(false);
return await user.SendFileAsync(file, caption ?? "x", text, isTTS).ConfigureAwait(false);
}
}
public static async Task<IUserMessage> SendFileAsync(this IUser user, Stream fileStream, string fileName, string caption = null, bool isTTS = false) =>
await (await user.GetOrCreateDMChannelAsync().ConfigureAwait(false)).SendFileAsync(fileStream, fileName, caption, isTTS).ConfigureAwait(false);
await user.SendFileAsync(fileStream, fileName, caption, isTTS).ConfigureAwait(false);
// This method is used by everything that fetches the avatar from a user
public static Uri RealAvatarUrl(this IUser usr, ushort size = 128)