当我触发guildDelete事件时,使用“角色删除”修复丢失的权限

时间:2019-10-08 16:59:11

标签: node.js discord.js

Bot权限: Admin (所有权限)
Bot Role位于列表顶部

我尝试了以下代码:

client.on("guildDelete", async guild => {
    try {
        await guild.roles.find(r => r.id == "123456789").delete()
    }
    catch(err){
    // Missing Permissions
    }
})

但是,我也尝试过此操作(模拟guildDelete事件)

  

参数“公会”是一个真实的公会

client.emit("guildDelete", guild)
// This time, the role is deleted...

为什么这次可以使用,但在实际事件中却不可用?

1 个答案:

答案 0 :(得分:0)

public class ObjectsMapper { private readonly IMapper _mapper; private const string _dateFormat = "yyyy’-‘MM’-‘dd’T’HH’:’mm’"; public ObjectsMapper() { var config = new MapperConfiguration(cfg => { cfg.CreateMap<Customer, CustomerTO>() .ForMember(dest => dest.SomeDate.ToString(_dateFormat), opt => opt.MapFrom(src => src.SomeDate)) .ForMember(dest => dest.SomeDate.ToString(_dateFormat), opt => opt.MapFrom(src => src.SomeDate)); cfg.CreateMap<CustomerTO, Customer>() .ForMember(dest => dest.SomeDate, opt => opt.MapFrom(src => Convert.ToDateTime(src.SomeDate))) .ForMember(dest => dest.SomeDate, opt => opt.MapFrom(src => Convert.ToDateTime(src.SomeDate))); }); _mapper = config.CreateMapper(); } public User Map(CustomerTO user) => _mapper.Map<CustomerTO, Customer>(customer); } 事件被触发意味着您的机器人帐户已从该公会中删除,或者通过离开自己,被踢,被禁止或被公会删除。

不再进入公会将使您的Bot无法与该公会中的任何内容进行互动,从而引发无效的权限错误。

使用guildDelete时,您正在模拟事件被触发,这意味着您的Bot仍在公会中并且仍然具有访问权限。