I replaced
private void HandleNick(IPlayer player, string discordId = null)
{
discordId = discordId ?? GetDiscord(player.Id);
if (discordId == null)
return;
var guildmember = GetGuildMember(discordId);
if (guildmember == null)
return;
if (guildmember.nick == player.Name)
return;
Client.DiscordServer.ModifyUsersNick(Client, discordId, player.Name);
}
to something like this and it works
using Newtonsoft.Json.Linq;
using Oxide.Ext.Discord.REST;
private void HandleNick(IPlayer player, string discordId = null)
{
discordId = discordId ?? GetDiscord(player.Id);
if (discordId == null)
return;
Client.DiscordServer.GetGuildMember(Client, discordId, member =>
{
if (member == null)
return;
if (member.nick == player.Name)
return;
ModifyGuildMemberNick(Client, Client.DiscordServer.id, member.user.id, player.Name);
});
}
public void ModifyGuildMemberNick(DiscordClient client, string guildID, string userID, string nick, Action callback = null)
{
var jsonObj = new Dictionary<string, object>()
{
{ "nick", nick }
};
client.REST.DoRequest($"/guilds/{guildID}/members/{userID}", RequestMethod.PATCH, jsonObj, callback);
}