簡體   English   中英

discord.js v12 AFK 命令

[英]discord.js v12 AFK command

我正在嘗試執行 AFK 命令。 我想在用戶被 ping 時顯示一個原因,所以我稍微編輯了一個代碼,這是我當前的代碼:

client.on('message', (message) => {
 if (db.has(message.author.id + '.afk')) {
  message.channel.send(`Welcome back ${message.author} I removed your AFK.`);
  db.delete(message.author.id + '.afk');
  db.delete(message.author.id + '.messageafk');
 }
 if (message.content.startsWith('+afk')) {
  message.channel.send(
   'Aight, I have set your AFK. I will send a message to the users who mention you..'
  );
  // then here you use the database :
  db.set(message.author.id + '.afk', 'true');
  db.set(
   message.author.id + '.messageafk',
   message.content
    .slice(5)
    .trim()
    .split(/ +/g)
  );
 }
 if (message.content.includes('+afk off')) {
  db.delete(message.author.id + '.afk');
  db.delete(message.author.id + '.messageafk');
 }
});

當提到用戶時:

client.on('message', (message) => {
 // If one of the mentions is the user
 message.mentions.users.forEach((user) => {
  if (message.author.bot) return false;

  if (
   message.content.includes('@here') ||
   message.content.includes('@everyone')
  )
   return false;
  if (db.has(user.id + '.afk'))
   message.channel.send('The user is AFK: ' + messageafk);
 });
});

當我運行代碼時,在用戶被 ping 之前沒有錯誤。這是我得到的錯誤:

/home/runner/MutedPinkBlogclient/index.js:224
if(db.has(user.id + '.afk')) message.channel.send('The user is AFK: ' + messageafk)
                                                                        ^

    ReferenceError: messageafk is not defined
        at /home/runner/MutedPinkBlogclient/index.js:224:73
        at Map.forEach (<anonymous>)
        at Client.<anonymous> (/home/runner/MutedPinkBlogclient/index.js:220:24)
        at Client.emit (events.js:327:22)
        at Client.EventEmitter.emit (domain.js:483:12)
        at MessageCreateAction.handle (/home/runner/MutedPinkBlogclient/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
        at Object.module.exports [as MESSAGE_CREATE] (/home/runner/MutedPinkBlogclient/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
        at WebSocketManager.handlePacket (/home/runner/MutedPinkBlogclient/node_modules/discord.js/src/client/websocket/WebSocketManager.js:384:31)
        at WebSocketShard.onPacket (/home/runner/MutedPinkBlogclient/node_modules/discord.js/src/client/websocket/WebSocketShard.js:444:22)
        at WebSocketShard.onMessage (/home/runner/MutedPinkBlogclient/node_modules/discord.js/src/client/websocket/WebSocketShard.js:301:10)

當您嘗試在此處訪問messageafk時:

message.channel.send('The user is AFK: ' + messageafk)

它正在尋找在client.on()上調用的箭頭 function 的 scope 中定義的變量。

您應該改為從db獲取此類消息並將其分配給變量,然后再發送。

您似乎使用quick.db 如果你想訪問一個變量,你必須使用get() function:這:

message.channel.send('The user is AFK: ' + messageafk)

會變成:

message.channel.send('The user is AFK: ' + db.get(<User>.messageafk))

當然,您將用實際提到的用戶 ID 替換<User>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM