提及在机器人状态中具有特定角色的用户
Mention users with specific role in bot status
Sooo,大家好,这是我第一次在 Whosebug 上发帖。无论如何,最近我开始学习 discord.js 并且我设法在 v12 中创建了一个自动更改状态的小机器人。这是代码:
setInterval(() => {
const statuses = [
`user 1`,
`user 2`,
`user 3...`
]
const status = statuses[Math.floor(Math.random() * statuses.length)]
client.user.setActivity(status, { type: "WATCHING" })
}, 5000)
重点是让某些成员的用户名出现在机器人状态中,如果服务器只喜欢这些“特殊”成员中的一些,这真的很好,但现在我的服务器变大了,我希望机器人可以定位一个特定角色并列出所有具有该“特殊”角色的成员 :)
请帮助我,提前谢谢你
所以在 Elitezen 试图帮助我之后,我这样做了:
我在准备就绪时在客户端中添加了异步:
client.on("ready", async () => {
const guild = client.guilds.cache.get("SERVER_ID");
我添加了你的代码:
const role = guild.roles.cache.get('SERVER_ID');
await guild.members.fetch();
setInterval(() => {
const statuses = Array
.from(role.members.cache.values())
.map(member => member.displayName);
const status = statuses[Math.floor(Math.random() * statuses.length)]
client.user.setActivity(status, { type: "WATCHING" })
}, 5000)
现在我遇到了这个错误:
类型错误:无法读取未定义的 属性 'values'
使用 RoleManager#get()
或 RoleManager#find()
定位您想要的角色的示例
const role = <Guild>.roles.cache.find(r => r.name == 'role name');
// Or
const role = <Guild>.roles.cache.get('role id');
要获得担任此角色的所有成员,首先获取公会的所有成员,然后根据集合的值构造一个数组。
然后将成员数组映射到他们的显示名称(或用户的用户名)
如果要获取所有成员,请确保已启用公会成员的意图。
await <Guild>.members.fetch();
setInterval(() => {
const statuses = Array
.from(role.members.values());
.map(member => member.displayName);
const status = statuses[Math.floor(Math.random() * statuses.length)]
client.user.setActivity(status, { type: "WATCHING" })
}, 5000)
所以,感谢 Elitezen,我设法解决了我的问题。
使客户端准备好异步函数后
client.on("ready", async () => {
const guild = client.guilds.cache.get("SERVER_ID");
这是提及在机器人状态中具有特定角色的用户的最终脚本:
const role = guild.roles.cache.get('ROLE_ID');
await guild.members.fetch();
setInterval(() => {
const statuses = Array
.from(role.members.values())
.map(member => member.displayName);
const status = statuses[Math.floor(Math.random() * statuses.length)]
client.user.setActivity(status, { type: "WATCHING" })
}, 5000)
Sooo,大家好,这是我第一次在 Whosebug 上发帖。无论如何,最近我开始学习 discord.js 并且我设法在 v12 中创建了一个自动更改状态的小机器人。这是代码:
setInterval(() => {
const statuses = [
`user 1`,
`user 2`,
`user 3...`
]
const status = statuses[Math.floor(Math.random() * statuses.length)]
client.user.setActivity(status, { type: "WATCHING" })
}, 5000)
重点是让某些成员的用户名出现在机器人状态中,如果服务器只喜欢这些“特殊”成员中的一些,这真的很好,但现在我的服务器变大了,我希望机器人可以定位一个特定角色并列出所有具有该“特殊”角色的成员 :) 请帮助我,提前谢谢你
所以在 Elitezen 试图帮助我之后,我这样做了:
我在准备就绪时在客户端中添加了异步:
client.on("ready", async () => {
const guild = client.guilds.cache.get("SERVER_ID");
我添加了你的代码:
const role = guild.roles.cache.get('SERVER_ID');
await guild.members.fetch();
setInterval(() => {
const statuses = Array
.from(role.members.cache.values())
.map(member => member.displayName);
const status = statuses[Math.floor(Math.random() * statuses.length)]
client.user.setActivity(status, { type: "WATCHING" })
}, 5000)
现在我遇到了这个错误: 类型错误:无法读取未定义的 属性 'values'
使用 RoleManager#get()
或 RoleManager#find()
const role = <Guild>.roles.cache.find(r => r.name == 'role name');
// Or
const role = <Guild>.roles.cache.get('role id');
要获得担任此角色的所有成员,首先获取公会的所有成员,然后根据集合的值构造一个数组。
然后将成员数组映射到他们的显示名称(或用户的用户名)
如果要获取所有成员,请确保已启用公会成员的意图。
await <Guild>.members.fetch();
setInterval(() => {
const statuses = Array
.from(role.members.values());
.map(member => member.displayName);
const status = statuses[Math.floor(Math.random() * statuses.length)]
client.user.setActivity(status, { type: "WATCHING" })
}, 5000)
所以,感谢 Elitezen,我设法解决了我的问题。
使客户端准备好异步函数后
client.on("ready", async () => {
const guild = client.guilds.cache.get("SERVER_ID");
这是提及在机器人状态中具有特定角色的用户的最终脚本:
const role = guild.roles.cache.get('ROLE_ID');
await guild.members.fetch();
setInterval(() => {
const statuses = Array
.from(role.members.values())
.map(member => member.displayName);
const status = statuses[Math.floor(Math.random() * statuses.length)]
client.user.setActivity(status, { type: "WATCHING" })
}, 5000)