在加入时向 Discord 成员添加角色

Posted

技术标签:

【中文标题】在加入时向 Discord 成员添加角色【英文标题】:Adding Role To Discord Member on Join 【发布时间】:2020-12-11 23:20:12 【问题描述】:

我正在尝试使用 js 编写一个 Discord 机器人,该机器人将欢迎新加入者加入服务器并为他们分配 7 天的“试用成员”角色。我一直无法让角色的自动分配工作。我将在下面包含我的代码,非常感谢任何帮助。谢谢。

/////Generic Authorization and packages////
var Discord = require('discord.io');
var logger = require('winston');
var auth = require('./auth.json');

// Configure logger settings
logger.remove(logger.transports.Console);
logger.add(new logger.transports.Console, 
    colorize: true
);
logger.level = 'debug';
// Initialize Discord Bot 
const bot = new Discord.Client(
  token: auth.token,
  autorun: true
);
bot.on('ready', function (evt) 
    logger.info('Connected');
    logger.info('Logged in as: ');
    logger.info(bot.username + ' - (' + bot.id + ')');


);

//////有问题的代码块从这里开始\\\

bot.on('guildMemberAdd', member => 
  
    console.log('User ' + member.username + ' has joined the server!')
    var roleid = '746791647140118591';
    member.roles.add('746791647140118591').then(()=> 
      bot.sendMessage(
        to: member.id,
        message: 'beep boop!'
      )
    );

////// 问题代码块结束

//protocol for setting the start date of the trial membership
    var currentDate = new Date();
    var day = currentDate.getDate();
    var month = currentDate.getMonth() + 1;
    var year = currentDate.getFullYear();
    var date_formatted = month + '/' + day + '/' + year; 
// protocol for setting the end date of the trial membership
    var end_date = new Date();
    end_date.setDate(end_date.getDate()+7);
    var end_day = end_date.getDate();
    var end_month = end_date.getMonth()+ 1;
    var end_year =  end_date.getFullYear();
    var formatted_end_date = end_month + '/' + end_day + '/' + end_year; 
    
    console.dir(member);
    userID=member.id;
    bot.sendMessage(
        to: member.id,

        message: 'Hi there ' +member.username+ '! Welcome to Stonks Society- we\'re glad you\'re here. Your trial membership begins today ('+ date_formatted +') and will expire in seven days ('+ formatted_end_date +')'

    )

 //    );

);

【问题讨论】:

你使用的是什么版本的discord.js 您能否更详细地描述您遇到的问题并突出显示存在问题的代码部分,或者发布一个最小代码来显示问题? @Lioness100 我正在使用最新版本的 discord.js (12.3.1) @Sebi 我在代码中创建了一个分隔符,希望使问题代码更清晰。我收到以下错误“member.roles.add('74679164714​​0118591').then(()=> ^ TypeError: member.roles.add is not a function” 有事困扰着我。为什么要导入discord.io?你使用的是 discord.js 还是 discord.io? 【参考方案1】:

您使用的是 discord.io 而不是 discord.js,您应该使用 discord.io 添加角色

var roleID = '746791647140118591';
var serverID = 'the ID of the server';

bot.addToRole(
  serverID: serverID,
  roleID: roleID,
  userID: member.id
, (err) => 
  if(err) console.log(err);
);

有关更多信息,您可以阅读文档here

【讨论】:

以上是关于在加入时向 Discord 成员添加角色的主要内容,如果未能解决你的问题,请参考以下文章

如何向所有具有角色的成员发送消息(discord.js)

加入不和谐服务器时如何为特定成员添加角色

Discord.py 将角色添加到成员

Discord Py - 如何使用文本命令向公会的所有成员添加多个角色

**已解决** discord.js guildMemberAdd() 未向对象添加正确的值

在 discord.py 中获取成员的角色