add method

Future<void> add(
  1. Snowflake id, {
  2. String? reason,
})

Add a Role to the GuildMember

Example :

final Role? role = guild.roles.cache.get('446556480850755604');
final GuildMember? member = guild.members.cache.get('240561194958716924');

if (member != null && role != null) {
  await member.roles.add(role.id)
}

You can pass a reason for the audit logs.

Example :

await member.roles.add('446556480850755604', reason: 'I love this user');

Implementation

Future<void> add (Snowflake id, {String? reason}) async {
  Http http = ioc.singleton(Service.http);
  Role? role = manager.cache.get(id);

  if(role == null) {
    throw NotExist(prefix: 'role not exist', cause: 'You can\'t add a role that don\'t exist!');
  }

  Map<String, String> headers = {};
  if(reason != null) {
    headers.putIfAbsent('X-Audit-Log-Reason', () => reason);
  }

  Response response = await http.put(
    url: '/guilds/${manager.guild.id}/members/$memberId/roles/$id',
    payload: {},
    headers: headers
  );

  if(response.statusCode == 204) {
    cache.putIfAbsent(id, () => role);
  }
}