我的问题是这个;我使用Discord.NET 1.0.2制作了一个机器人,当用户发送消息时,请检查该消息是否附加了文件,然后将其删除。 现在我做到了,但是有一个问题。在文件上传之前,该消息不会被删除。我尝试了各种方法,但是无法提出一种解决方案,该解决方案是如何等到文件上传后再删除消息。 任何帮助是极大的赞赏。 这就是我正在使用的:
private async Task CheckForImageMessage(SocketMessage s)
{
var msg = s as SocketUserMessage;
if (msg == null) return;
var context = new SocketCommandContext(_client, msg);
if (context.Message.Attachments.ElementAt(0) != null)
{
}
}
}
答案 0 :(得分:0)
首先,您不执行命令,因此几乎没有理由使用命令上下文-消息已经可以作为s
(Attachments
集合访问在IMessage
界面下)。
第二,在文件上传之前,您可能无法截获消息。如果我理解正确,您是否要删除包含附件的任何邮件?如果是这样,可以在Attachments
集合上使用Any方法。
private async Task RemoveAttachmentMsgsAsync(SocketMessage msg)
{
// check if the source channel is a message channel in a guild
if (msg.Channel is SocketTextChannel textChannel)
{
// get the current user to check for permissions
var currentUser = textChannel.Guild.CurrentUser;
// bail if the bot does not have manage message permission
if (!currentUser.GetPermissions(textChannel).ManageMessages) return;
}
// if we made it this far, we can assume that the bot has permission for
// the channel (including DM channel)
// use LINQ Any to check if the attachment contains anything
if (msg.Attachments.Any())
await msg.DeleteAsync();
}