如何解决基于 Discord.NET 审核日志的邀请跟踪器未发送所需消息
我向那些看到我上一篇评论的人道歉。我看到它太模糊了,我只是不在正确的顶空,但希望这篇文章能提供有关该问题的足够信息。我一直在尝试调试这个基于审计日志的邀请跟踪器荒谬的时间并且已经失去理智。这背后的想法是,使用 onmemberjoin
事件,机器人可以使用审核日志来获取用户用于加入公会的邀请,并将包含相关信息的日志发送到指定的日志通道。我可以在调试中看到正在收集审计日志但没有发送消息。从我尝试调试获得的信息看来,它以某种方式在 foreach
和 if
语句之间停止,它下面的行不知何故我不知道这怎么可能。如果有人能帮我找到问题,我将不胜感激。
private async Task OnMemberJoin(SocketGuildUser arg)
{
var g = arg.Guild;
var channelId = await _servers.GetLogsAsync(g.Id);
var chnlIdInt = Convert.ToInt64(channelId);
if (chnlIdInt == 0) return;
if (!g.CurrentUser.GuildPermissions.ViewAuditLog)
{
await _serverHelper.SendLogAsync(g,"Bot Does Not Have Sufficient Permissions","A event logger has Failed its task because I do\nnot have `View Audit Log` permissions. To solve this error please\ngive me that permission");
return;
}
var auditlogs = await g.GetAuditLogsAsync(1,null,ActionType.InviteUpdated)
.FlattenAsync();
foreach (var audit in auditlogs)
if (audit.User is IUser && audit.Data is InviteUpdateAuditLogData d1)
{
var inv3 = _client.Guilds
.OfType<InviteUpdateAuditLogData>()
.FirstOrDefault(x => x.After.Code.ToString().IndexOf(
d1.After.Code,StringComparison.OrdinalIgnoreCase) !=
-1);
if (inv3 == null) return;
if (inv3 is IInvite iInvite)
{
var uses = d1.Before.MaxUses.Value - d1.After.MaxUses.Value;
await _serverHelper.SendLogAsync(g,"Invite Used",$"An invite has been used.\nInvite: {iInvite.Url}\nTotal invite uses: `{uses.ToString()}`\nInvite created by: {iInvite.Inviter.Mention}");
return;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。