Skip to content

Instantly share code, notes, and snippets.

@MrEdinLaw
Created March 18, 2024 10:52
Show Gist options
  • Save MrEdinLaw/cdd3133d5b96ee3a73a058586eb7eb5d to your computer and use it in GitHub Desktop.
Save MrEdinLaw/cdd3133d5b96ee3a73a058586eb7eb5d to your computer and use it in GitHub Desktop.
Transfer role and username, from one discord server to another
import nextcord
from nextcord.ext import commands
BOT_TOKEN = "your_bot_token_here"
SPECIFIC_ROLE_ID_IN_SERVER_A = 1219228201667133470
ROLE_ID_IN_SERVER_B = 1219228524401917953
SERVER_A_ID = 1219228133727801384
SERVER_B_ID = 1219228491246211103
SERVER_A_CHANNEL = 1219228133727801387
SERVER_B_CHANNEL = 1219228491694870559
intents = nextcord.Intents.default()
intents.members = True # Required to track role changes
intents.guilds = True
bot = commands.Bot(command_prefix="!", intents=intents)
@bot.event
async def on_ready():
print(f"Logged in as {bot.user}!")
@bot.event
async def on_member_update(before, after):
if after.guild.id == SERVER_A_ID:
if set(after.roles).issuperset(set(before.roles)) and any(
role.id == SPECIFIC_ROLE_ID_IN_SERVER_A for role in after.roles
):
server_b = bot.get_guild(SERVER_B_ID)
server_a = bot.get_guild(SERVER_A_ID)
member_in_server_b = server_b.get_member(after.id)
server_a_channel = server_a.get_channel(SERVER_A_CHANNEL)
server_b_channel = server_b.get_channel(SERVER_B_CHANNEL)
if member_in_server_b:
role_in_server_b = server_b.get_role(ROLE_ID_IN_SERVER_B)
await member_in_server_b.add_roles(role_in_server_b)
new_nickname = after.display_name
await member_in_server_b.edit(nick=new_nickname)
await server_a_channel.send(f"Added role and updated nickname for {after.display_name} in Big Server.")
await server_b_channel.send(f"Added role and updated nickname for {after.display_name} in Sister Server.")
print(f"Added role and updated nickname for {after.display_name} in Server B.")
else:
await server_a_channel.send(f"Couldn't find member in Sister Server with ID {after.id}.")
print(f"Couldn't find member in Server B with ID {after.id}.")
bot.run(BOT_TOKEN)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment