当前位置: 首页 > 知识库问答 >
问题:

按id discord缓存帮会用户。js

禄星腾
2023-03-14

我正在和我的朋友制作一个调节机器人,我正在尝试这样做,如果一个用户在机器人重新启动或崩溃时处于静音状态,在启动时,它会循环我的数据库中每个公会的所有用户,并检查他们是否还有静音时间服务,然后使用setTimeout()等待多长时间,直到他们的muted角色被删除,但是,bot没有缓存用户,因此在用户未定义的情况下出现错误。如果有人知道如何通过id缓存用户或以其他方式缓存用户,我们将不胜感激。

我的代码:

client.on("ready", () => {
    client.user.setActivity(process.env.STATUS);
    console.log(`Logged in as ${client.user.tag}`);
    console.log(`Guilds: ${client.guilds.cache.size}`);
    client.guilds.cache.forEach(function (guild) {
        console.log(guild.name, ":", guild.id);
        for (user in db.get(`${guild.id}.users`)) {
            if (
                ms(db.get(`${guild.id}.users.${moderation.mute.time}`)) +
                    Date.now(db.get(`${guild.id}.users.${moderation.mute.date}`)) >=
                Date.now()
            ) {
                let mutedRole = message.guild.roles.cache.find(
                    (mR) => mR.name === "Muted"
                );
                if (!mutedRole)
                    mutedRole = await message.guild.roles.create({
                        data: { name: "Muted", color: "#000000", permissions: [] },
                    });
                client.guild.channels.cache.forEach(async (channel) => {
                    await channel.updateOverwrite(mutedRole, {
                        SEND_MESSAGES: false,
                        SPEAK: false,
                        VIDEO: false,
                        ADD_REACTIONS: false,
                        SEND_TTS_MESSAGES: false,
                        ATTACH_FILES: false,
                    });
                });
                let user = client.users.cache.get(user);
                user.roles.remove(mutedRole);
            }
        }
    });
});

共有1个答案

艾璞瑜
2023-03-14

您可以缓存甚至保存用户的id,并通过以下方法获取分配的GuildMember

// 'user' will become the GuildMember of your cached id
let user = null;

// 'cachedId' is the id of the cached user
let cachedId = yourCachedId;

client.users.fetch(cachedId).then(usr => {user = usr})
 类似资料:
  • 我正在用自动配置的Tomcat池数据源开发基于spring boot的应用程序。我必须在不同的DB模式下调用相同的Oracle存储过程(它们都有执行授权),而且我事先没有指定的用户/密码列表。但在程序调用的时候我知道凭据。我使用dataSource对象的getConnection(user,password)方法来接收连接并且工作良好。但是,如果我一个一个地调用过程三次--对于用户A,用户B,再一

  • 假设我们网站有一个使用多个查询生成的简介页面。我们有此页的模型,如 UserProfile 类,它包含用户所有简介数据,及一个获取指定用户 id 简介的 GetProfile 方法。 public class UserProfile { public string Name { get; set; } public List<CachedFriend> Friends { get;

  • 在我正在开发的应用程序中,我使用了Spring JMS DefaultMessageListenerContainer和作为SessionAwareMessageListener的JMS使用者。还有一个XA transactionManager,在JMS和JDBC之间共享。作为JMS提供者,我使用WebLogic。 我注意到,每次消费者收到一条消息时,JMS会话都与之前消息中使用的会话完全不同:

  • 我需要实现喜欢/不喜欢功能(针对匿名用户,因此无需注册)。问题是内容是由清漆提供的,我需要显示喜欢的实际数量。 我想知道像stackoverflow这样的网站是怎么做到的。假设页面缓存在Varnish中(仅针对匿名用户),所以每次用户对答案/问题进行投票时,页面都需要从缓存中清除。我说得对吗?当前投票数需要对其他用户可见。 在这种情况下,什么是好方法?我是否应该在用户每次点击“喜欢”按钮时发送

  • 问题内容: 我正在构建一个测试爬网程序,并且想知道Go(golang)是否缓存DNS查询。我没有看到有关dnsclient中缓存的任何信息。添加到任何搜寻器以防止大量额外的DNS查询似乎很重要。 Go(1.4+)是否缓存DNS查找? 如果不是,那么debian / ubuntu / linux,windows或darwin / OSX是否可以在网络级别进行任何缓存? 问题答案: 您的问题的答案是否

  • 设置为和设置为in。 当我运行时,它显示,但我的目录中仍有236K个文件。 对此感到沮丧,我还使用从该目录手动删除了下的所有文件/目录。 现在,当我运行时,我得到 所以,我手上有两个问题。首先是:为什么Artisan没有删除所有缓存文件?如何安全地删除它们?第二个问题是:我如何从这恢复,以便PHP工匠队列:重启不会在我身上出错? 更新:我突然想到,如果设置为,我可能没有理由重新启动队列工作程序,因