使用 Embed 列出没有角色的用户,当太多时出现错误
Listing users without roles with Embed getting error when too many
当没有角色的用户只有大约 1-15 个用户列表时,它可以正常工作,但是当它超过 100 个用户时,它无法打印,并且会给出错误,即它说它达到了文本的限制在嵌入中.. 你们能帮我看看如何生成具有页面功能的列表吗?
编辑:人们说阅读了错误,我知道错误超出了嵌入的限制我试图寻求帮助的是一种为嵌入创建动态页面的方法,我已经尝试过 discord.js -分页但不希望它是手动创建而不是动态的。
顺便说一句,我使用 discord.js 版本 ^12.5.1
require ('dotenv').config()
const Discord = require('discord.js');
const usedCommand = new Set();
const config = process.env;
module.exports.run = async (bot, message, args) => {
if(usedCommand.has(message.author.id)){
message.reply("You cannot use " + config.prefix + "unorole command beacuse of the cooldown.")
} else {
if (message.content.toLowerCase().startsWith(config.prefix + "unorole")) {
//check if no perm
if(!message.member.hasPermission("ADMINISTRATOR")){
return message.reply("You don't have `ADMINISTRATOR` permission to do that!");
}
var memberscount = message.guild.members.cache.filter(member => member.roles.cache.array().length < 2).size;
if (memberscount == 0){
message.reply('Looks like everyone has a role already.')
}
else{
//Embed List of users without role
const ListEmbed = new Discord.MessageEmbed()
.setTitle(`Prune Bot | Users`)
.setDescription(`Users that has no role.`)
.setColor('#b491c8')
.addFields(
{ name: 'Users:', value: message.guild.members.cache.filter(member => member.roles.cache.array().length < 2).map(member => member.user.tag).join('\n') },)
.setFooter('PruneBot is created by Mashwishi', 'https://i.imgur.com/DxWDaGv.png');
message.channel.send(ListEmbed);
}
}
usedCommand.add(message.author.id);
setTimeout(() => {
usedCommand.delete(message.author.id);
}, 5000);
}
}
module.exports.config = {
name: "unorole",
description: "",
usage: "?unorole",
accessableby: "Admins",
aliases: []
}
我也试过正常的消息发送
message.channel.send(`Users that has no role.`);
message.channel.send(message.guild.members.cache.filter(member => member.roles.cache.array().length < 2).map(member => member.user.tag).join('\n'))
错误:
我已经修好了。
//display the gathered data of users
const therole = message.guild.roles.cache.find(role => role.id == mentionedrole);
//message.guild.roles.cache.get(mentionedrole).members.map(m=>m.user.tag.toUpperCase()).sort().join('\n')
const ListEmbed = new Discord.MessageEmbed()
.setTitle(`Prune Bot | Users`)
.setDescription(`Users that has ${therole} role. \n React ▶️ to view the list`)
.setColor('#b491c8')
.setFooter('PruneBot is created by Mashwishi', 'https://i.imgur.com/DxWDaGv.png');
var listMsg = await message.channel.send(ListEmbed);
var page = parseInt(args[0]);
if (!page) {
page = 1;
};
await listMsg.react("◀️");
await listMsg.react("▶️");
const filter = (reaction, user) => ["◀️", "▶️"].includes(reaction.emoji.name) && user.id === message.author.id;
const collector = listMsg.createReactionCollector(filter, {
time: 120000
});
collector.on('collect', (reaction, user) => {
reaction.emoji.reaction.users.remove(user.id);
switch (reaction.emoji.name) {
case "◀️":
--page;
if (page < 1) {
page = 1;
};
const newlistMsga = new Discord.MessageEmbed()
.setDescription(`Users that has ${therole} role.`)
.setColor('#b491c8')
.addFields(
{ name: 'List:', value: getUsers(page)}
)
.setFooter('PruneBot is created by Mashwishi', 'https://i.imgur.com/DxWDaGv.png');
listMsg.edit(newlistMsga);
break;
case "▶️":
//Increment the page number
++page;
const newlistMsgb = new Discord.MessageEmbed()
.setTitle(`Prune Bot | Users`)
.setDescription(`Users that has ${therole} role.`)
.setColor('#b491c8')
.addFields(
{ name: 'List:', value: getUsers(page)}
)
.setFooter('PruneBot is created by Mashwishi', 'https://i.imgur.com/DxWDaGv.png');
listMsg.edit(newlistMsgb);
break;
};
});
collector.on('end', collected => {
return message.channel.send("I'm done looking for reactions on the message!");
});
function getUsers(n) {
const list = message.guild.roles.cache.get(mentionedrole).members.map(m => m.user.tag.toUpperCase()).sort();
var pageNum = (n * 10) - 10;
if (!pageNum) {
pageNum = 0;
};
return list.slice(pageNum, pageNum + 9).join("\n");
};
错误很明显是消息太长了。限制消息的长度。
当没有角色的用户只有大约 1-15 个用户列表时,它可以正常工作,但是当它超过 100 个用户时,它无法打印,并且会给出错误,即它说它达到了文本的限制在嵌入中.. 你们能帮我看看如何生成具有页面功能的列表吗?
编辑:人们说阅读了错误,我知道错误超出了嵌入的限制我试图寻求帮助的是一种为嵌入创建动态页面的方法,我已经尝试过 discord.js -分页但不希望它是手动创建而不是动态的。
顺便说一句,我使用 discord.js 版本 ^12.5.1
require ('dotenv').config()
const Discord = require('discord.js');
const usedCommand = new Set();
const config = process.env;
module.exports.run = async (bot, message, args) => {
if(usedCommand.has(message.author.id)){
message.reply("You cannot use " + config.prefix + "unorole command beacuse of the cooldown.")
} else {
if (message.content.toLowerCase().startsWith(config.prefix + "unorole")) {
//check if no perm
if(!message.member.hasPermission("ADMINISTRATOR")){
return message.reply("You don't have `ADMINISTRATOR` permission to do that!");
}
var memberscount = message.guild.members.cache.filter(member => member.roles.cache.array().length < 2).size;
if (memberscount == 0){
message.reply('Looks like everyone has a role already.')
}
else{
//Embed List of users without role
const ListEmbed = new Discord.MessageEmbed()
.setTitle(`Prune Bot | Users`)
.setDescription(`Users that has no role.`)
.setColor('#b491c8')
.addFields(
{ name: 'Users:', value: message.guild.members.cache.filter(member => member.roles.cache.array().length < 2).map(member => member.user.tag).join('\n') },)
.setFooter('PruneBot is created by Mashwishi', 'https://i.imgur.com/DxWDaGv.png');
message.channel.send(ListEmbed);
}
}
usedCommand.add(message.author.id);
setTimeout(() => {
usedCommand.delete(message.author.id);
}, 5000);
}
}
module.exports.config = {
name: "unorole",
description: "",
usage: "?unorole",
accessableby: "Admins",
aliases: []
}
我也试过正常的消息发送
message.channel.send(`Users that has no role.`);
message.channel.send(message.guild.members.cache.filter(member => member.roles.cache.array().length < 2).map(member => member.user.tag).join('\n'))
错误:
我已经修好了。
//display the gathered data of users
const therole = message.guild.roles.cache.find(role => role.id == mentionedrole);
//message.guild.roles.cache.get(mentionedrole).members.map(m=>m.user.tag.toUpperCase()).sort().join('\n')
const ListEmbed = new Discord.MessageEmbed()
.setTitle(`Prune Bot | Users`)
.setDescription(`Users that has ${therole} role. \n React ▶️ to view the list`)
.setColor('#b491c8')
.setFooter('PruneBot is created by Mashwishi', 'https://i.imgur.com/DxWDaGv.png');
var listMsg = await message.channel.send(ListEmbed);
var page = parseInt(args[0]);
if (!page) {
page = 1;
};
await listMsg.react("◀️");
await listMsg.react("▶️");
const filter = (reaction, user) => ["◀️", "▶️"].includes(reaction.emoji.name) && user.id === message.author.id;
const collector = listMsg.createReactionCollector(filter, {
time: 120000
});
collector.on('collect', (reaction, user) => {
reaction.emoji.reaction.users.remove(user.id);
switch (reaction.emoji.name) {
case "◀️":
--page;
if (page < 1) {
page = 1;
};
const newlistMsga = new Discord.MessageEmbed()
.setDescription(`Users that has ${therole} role.`)
.setColor('#b491c8')
.addFields(
{ name: 'List:', value: getUsers(page)}
)
.setFooter('PruneBot is created by Mashwishi', 'https://i.imgur.com/DxWDaGv.png');
listMsg.edit(newlistMsga);
break;
case "▶️":
//Increment the page number
++page;
const newlistMsgb = new Discord.MessageEmbed()
.setTitle(`Prune Bot | Users`)
.setDescription(`Users that has ${therole} role.`)
.setColor('#b491c8')
.addFields(
{ name: 'List:', value: getUsers(page)}
)
.setFooter('PruneBot is created by Mashwishi', 'https://i.imgur.com/DxWDaGv.png');
listMsg.edit(newlistMsgb);
break;
};
});
collector.on('end', collected => {
return message.channel.send("I'm done looking for reactions on the message!");
});
function getUsers(n) {
const list = message.guild.roles.cache.get(mentionedrole).members.map(m => m.user.tag.toUpperCase()).sort();
var pageNum = (n * 10) - 10;
if (!pageNum) {
pageNum = 0;
};
return list.slice(pageNum, pageNum + 9).join("\n");
};
错误很明显是消息太长了。限制消息的长度。