我的代码已经运行了几个星期,但一些事件和函数随机停止工作!
首先, my guildMemberAdd, guildMemberRemove, 和guildMemberUpdateevents 只是停止做任何事情。没有出现错误,当我调试我的代码时,我意识到在发生相应的操作时甚至没有发出事件。
// const client = new Discord.Client();
client.on('guildMemberAdd', (member) => // not triggering!
client.channels.cache.get('channel-id').send(`${member.tag} joined!`); // not sending!
Run Code Online (Sandbox Code Playgroud)
其次,当试图从GuildMemberManager缓存中获取成员时,它总是返回undefined:
const member = message.guild.members.cache.get(targetID); // undefined
Run Code Online (Sandbox Code Playgroud)
当我尝试显示该公会成员缓存中的每个成员时,它只显示了我和我的机器人,而不是通常的 100 多个成员。
然后我尝试使用以下方法获取公会中的每个成员GuildMemberManager.fetch():
const members = await message.guild.members.fetch();
Run Code Online (Sandbox Code Playgroud)
但我收到了这个错误:
[GUILD_MEMBERS_TIMEOUT]:成员没有及时到达。
同样,我确定我的语法是正确的,因为它已经完美运行了一段时间,而且我最近没有更新任何会影响此代码的内容。
好吧,我目前正在使用表情符号:x:,但在我的服务器上我有一个名为:superbotxemoji 的表情符号:我只是不知道如何让我的机器人使用它
我的代码:
const Discord = require('discord.js');
module.exports = {
name: 'say',
description: 'say',
execute(message, args) {
const { prefix, token } = require('../config.json');
if (!message.member.hasPermission('ADMINISTRATOR'))
return message.channel.send({
embed: {
color: 16777201,
description: `:x: | ${message.author}, You are not allowed to use this command.`,
footer: {
text: ` | Required permission: ADMINISTRATOR`,
},
},
});
if (!args.length)
return message.channel.send({
embed: {
color: 16777201,
description: `:x: | ${message.author}, You need to put a message.`,
footer: {
text: …Run Code Online (Sandbox Code Playgroud) 我的代码中有很多错误,我认为这是GuildMembers和之间混淆的结果Users。有人可以解释一下区别吗?
const user = message.mentions.users.first();
// TypeError: user.kick() is not a function
user.kick({ reason: 'spamming' });
// TypeError: user.ban() is not a function
user.ban({ reason: 'DM Advertising' });
// TypeError: message.author.hasPermission() is not a function
if (!message.author.hasPermission('ADMINISTRATOR')) return;
console.log(user.displayName); // undefined
// TypeError: message.member.createdAt() is not a function
embed.addField('Account Created', message.member.createdAt());
client.on('guildMemberUpdate', (oldMember, newMember) => {
console.log(`${newMember.tag} was updated`); // 'undefined was updated'
});
if (message.member.bot) return; // undefined
// TypeError: Cannot read property 'add' of …Run Code Online (Sandbox Code Playgroud) 所以我想将嵌入文本和普通文本放在一条消息中。我想我已经看到了,但如果不可能的话,你可以在评论中说出来。
我尝试了一些可能很愚蠢的方法(我是编码新手)。这是我尝试的方法:
if (msg.startsWith(among + 'wiki')) {
wikipog = message.content.slice(7);
var embed = new Discord.MessageEmbed()
.setTitle(':globe_with_meridians: Among Us Wiki :globe_with_meridians:')
.setDescription('Down below is the page you asked for!')
.addField(
'If an image shows up down below, that means your page exists!',
'\u200B'
)
.addField('\u200b', field)
.setColor(color)
.setFooter(footer);
message.channel.send(embed, `https://among-us.fandom.com/wiki/${wikipog}`);
}
Run Code Online (Sandbox Code Playgroud)
先感谢您!
(顺便说一句,我知道我可以只执行两个 message.channel.send(),但这会发送两个 ping/通知)
这是我正在处理的代码的相关片段:
message.client.guilds.fetch('ID Here', false).then(guild => message.channel.send(guild.name))
Run Code Online (Sandbox Code Playgroud)
根据 do the discord.jsdocs,这个函数GuildManager#fetch()理论上应该可以工作。但是,我不断收到此错误:
message.client.guilds.fetch is not a function
Run Code Online (Sandbox Code Playgroud)
我什至尝试直接从函数文档中复制和粘贴示例,但它仍然给了我同样的错误。
我很难过,任何帮助将不胜感激!
编辑:我应该提到所有其他discord.js fetch方法都可以正常工作,例如:
message.client.guilds.fetch is not a function
Run Code Online (Sandbox Code Playgroud)
编辑 #2:我之前的问题已经解决,我使用了错误版本的discord.js. 但是,我现在收到一个新错误:
message.channel.messages.fetch()
Run Code Online (Sandbox Code Playgroud)
运行时。
我想知道是否可以通过User ID. 通常,要禁止某人,您可以使用 aGuildMember和.ban()方法:
GuildMember.ban()
Run Code Online (Sandbox Code Playgroud)
但是,如果用户不在您要禁止他们加入的公会中,则不可能获得他们的GuildMember对象。有替代方法吗?
使用实际的不和谐程序,它是可以禁止某人通过与他们的提他们加入之前User ID(例如:<@123456789012345678>)。然后,您可以右键单击提及,然后禁止它们:
有没有办法复制这个discord.js?
在我研究这个问题的过程中,我偶然发现有人和我问了同样的问题。接受的答案是使用该Guild.ban功能。
但是,由于我在Guild类 docs 中找不到该方法,并且使用了相同的答案fetchUser()(不推荐使用的函数),我得出的结论是它只能在discord.js v11.
由于它以前是早期版本中的一个函数,我敢肯定现在可能还有一种方法可以做到这一点,但我还没有找到。
最后,我知道我可以将 加入User ID到一个数组中,每当guildMemberAdd发出事件时,我都可以User ID根据该数组检查它们,但我仍然想知道是否可以禁止成员User ID。提前致谢!
(我正在尝试按照本教程进行操作)
当我运行时npm start,出现以下错误:
PS C:\Users\user\Desktop\Projects\Websites\project\project> npm start
> PROJECT@0.0.0 start C:\Users\user\Desktop\Projects\Websites\project\project
> webpack-dev-server --config webpack.config.js --open
'find_dp0' is not recognized as an internal or external command,
operable program or batch file.
internal/modules/cjs/loader.js:775
throw err;
^
Error: Cannot find module 'C:\webpack-dev-server\bin\webpack-dev-server.js'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:772:15)
at Function.Module._load (internal/modules/cjs/loader.js:677:27)
at Function.Module.runMain (internal/modules/cjs/loader.js:999:10)
at internal/main/run_main_module.js:17:11 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
Run Code Online (Sandbox Code Playgroud)
我认为主要问题是它正在webpack-dev-server我的C:/驱动器中寻找模块,因为错误是这样说的:
Error: Cannot find module 'C:\webpack-dev-server\bin\webpack-dev-server.js'
Run Code Online (Sandbox Code Playgroud)
为什么它会在那里寻找模块而不是在本地node_modules文件夹中?这至少是我认为导致问题的原因,也许是其他原因?
我在其他任何地方都找不到在线相同的错误(它在用户C:/驱动器中查找的位置)。我在 Visual Studio Community …
我在 中做了一个投票命令discord.js,但我不确定如何获得对特定表情符号做出反应的人数。这是我的代码:
if (!args[1]) return message.channel.send('You need to ask a question.');
let pollq = args.join(' ');
let whoask = msg.author.username;
const poll = new D.MessageEmbed()
.setTitle('New Poll')
.setAuthor(
'Cleansound',
'https://yt3.ggpht.com/a/AATXAJxJ8Qab93CDlxO7tOg06Jifb1Z1-14j1Xj2nt3dNg=s100-c-k-c0xffffffff-no-rj-mo'
)
.setDescription(`${whoask} Baru Saja Membuat Pollin question baru`)
.setDescription(`${pollq}`)
.addField(` `, 'Untuk Setuju')
.addField(` `, 'Untuk Tidak Setuju')
.setTimestamp()
.setFooter(
'Cleansound Host',
'https://yt3.ggpht.com/a/AATXAJxJ8Qab93CDlxO7tOg06Jifb1Z1-14j1Xj2nt3dNg=s100-c-k-c0xffffffff-no-rj-mo'
);
await poll.react('');
await poll.react('');
msg.channel.send(poll);
Run Code Online (Sandbox Code Playgroud) 我正在尝试发出一个命令,在其中我可以获得机器人当前所在的每个公会邀请。当前代码:
client.on('message', async (message) => {
if (message.content.startsWith(prefix + 'invite')) {
let invite = client.guilds
.createInvite({
maxAge: 0, // 0 = infinite expiration
maxUses: 0, // 0 = infinite uses
})
.catch(console.error);
message.channel.send(invite);
}
});
Run Code Online (Sandbox Code Playgroud)
错误:
DiscordAPIError: Cannot send an empty message
Run Code Online (Sandbox Code Playgroud) client.on('guildMemberAdd', async (member) => {
const channel = member.guild.channels.cache.find(
(channel) => channel.name === 'general'
);
if (!channel) return;
const canvas = Canvas.createCanvas(700, 250);
const ctx = canvas.getContext('2d');
const background = await Canvas.loadImage('./wallpaper.jpg');
ctx.drawImage(background, 0, 0, canvas.width, canvas.height);
ctx.strokeStyle = '#ffffff';
ctx.strokeRect(0, 0, canvas.width, canvas.height);
// Select the font size and type from one of the natively available fonts
ctx.font = '60px ArialCE.ttf';
// Select the style that will be used to fill the text in
ctx.fillStyle = '#ffffff';
// Actually …Run Code Online (Sandbox Code Playgroud)