【问题标题】:Sending a different welcome message every time每次发送不同的欢迎信息
【发布时间】:2019-04-04 04:17:42
【问题描述】:

代码是每次新成员登录服务器时发送不同的欢迎消息(DM消息)。

client.on('guildMemberAdd', ReBeL => {
  var bel = ["Welcome 1 @", "Welcome 2  @!", "Welcome 3 @"]
  var moon = bel[Math.floor(Math.random() * bel.length)];
  moon = moon.replace('@', ReBeL.user)
  setTimeout(function() {
    member.createDM().then(function(channel) {
      return channel.send(moon)
    }).catch(console.error)
  }, 4000)
});

这是错误:

member.createDM().then(function (channel) {
^

ReferenceError: member is not defined
at Timeout._onTimeout (/home/cabox/workspace/bot.js:10:4)
at ontimeout (timers.js:498:11)
at tryOnTimeout (timers.js:323:5)
at Timer.listOnTimeout (timers.js:290:5)

【问题讨论】:

  • 什么错误?什么错误?
  • 在问题中会更具可读性 - 但由于 bot.on('guildMemberAdd', member => { 甚至不是您在问题中发布的代码的一部分,因此没有任何帮助
  • client.on('guildMemberAdd', ReBeL => { 你的代码 .... 与错误代码 bot.on('guildMemberAdd', member => { - 你如何解释?
  • 对不起,我在尝试修复代码时犯了错误,我将错误添加到问题中
  • 好吧,您发布的代码中的任何地方都没有定义成员,所以,这是您的问题

标签: javascript bots discord discord.js


【解决方案1】:

使用这种方式,它可以工作。我测试过了。

client.on('guildMemberAdd', member => {
var ReBeL = member.user.username;
var bel = ["Welcome 1 @","Welcome 2  @!","Welcome 3 @"]
var moon = bel[Math.floor(Math.random() * bel.length)];
moon = moon.replace('@', ReBeL)
setTimeout(function() {
member.createDM().then(function (channel) {
return channel.send(moon) 
 }).catch(console.error)
 },4000)});

您也可以添加服务器和成员数。你需要这样做:

client.on('guildMemberAdd', member => {
var ReBeL = member.user.username;
var ReBeLserver = member.guild.name;
var ReBelcount = member.guild.memberCount;
var bel = [
    "Welcome @, we hope you will enjoy staying in @server ",
    "Welcome @ you are #th member! We hope you will enjoy staying in @server"
]
var moon = bel[Math.floor(Math.random() * bel.length)];
moon = moon.replace('@', ReBeL)
moon = moon.replace('@server', ReBeLserver)
moon = moon.replace('#', ReBelcount)
setTimeout(function() {
member.createDM().then(function (channel) {
return channel.send(moon) 
 }).catch(console.error)
 },4000)});

这是一个嵌入的例子,我也添加了鉴别器。

client.on('guildMemberAdd', member => {
var user = member.user.username;
var server = member.guild.name;
var count = member.guild.memberCount;
var discriminator = member.user.discriminator;
var bel = [
    "Welcome @#$, we hope you will enjoy staying in @server ",
    "Welcome @#$ you are -th member! We hope you will enjoy staying in @server"
]
var welcome = bel[Math.floor(Math.random() * bel.length)];
welcome = welcome.replace('@', user)
welcome = welcome.replace('@server', server)
welcome = welcome.replace('-', count)
welcome = welcome.replace('$', discriminator)
setTimeout(function() {
member.createDM().then(function (channel) {
    let welcomeembed = new Discord.RichEmbed()
    .setColor(`RANDOM`)
    .setDescription(welcome)
return channel.send(welcomeembed) 
 }).catch(console.error)
 },100)});

【讨论】:

  • 效果很好 谢谢,看来你有经验。我有一个关于如何防止机器人向特定人的 ID 发送消息的问题
猜你喜欢
  • 1970-01-01
  • 2022-11-20
  • 1970-01-01
  • 2021-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多