fix: Emoji domains cause issues
All checks were successful
Build Docker / Build Image (push) Successful in 39s
All checks were successful
Build Docker / Build Image (push) Successful in 39s
This commit is contained in:
26
shaker.py
26
shaker.py
@@ -6,6 +6,7 @@ import dns.message
|
||||
import discord
|
||||
import json
|
||||
import requests
|
||||
import re
|
||||
|
||||
load_dotenv()
|
||||
|
||||
@@ -77,14 +78,37 @@ async def handle_role(member: discord.Member, shouldHaveRole: bool):
|
||||
|
||||
async def check_member(member: discord.Member) -> bool:
|
||||
if member.display_name[-1] != "/":
|
||||
print("No trailing /",member.display_name,flush=True)
|
||||
await handle_role(member, False)
|
||||
return False
|
||||
|
||||
if check_name(member.id, member.display_name[0:-1]):
|
||||
domain = member.display_name[0:-1]
|
||||
name_idna = domain.strip().rstrip("/").encode("idna")
|
||||
name_ascii = name_idna.decode("ascii")
|
||||
parts = name_ascii.split(".")
|
||||
|
||||
for part in parts:
|
||||
if not re.match(r'[A-Za-z0-9-_]+$', part):
|
||||
try:
|
||||
print("Name not verified, removing /",member.display_name,flush=True)
|
||||
await member.edit(nick=member.display_name[0:-1])
|
||||
except Exception as e:
|
||||
print(e)
|
||||
await handle_role(member, False)
|
||||
return False
|
||||
|
||||
try:
|
||||
name_rendered = name_idna.decode("idna")
|
||||
except UnicodeError: # don't render invalid punycode
|
||||
name_rendered = name_ascii
|
||||
|
||||
if check_name(member.id, name_ascii):
|
||||
print("Name verified",member.display_name,flush=True)
|
||||
await handle_role(member, True)
|
||||
return True
|
||||
|
||||
try:
|
||||
print("Name not verified, removing /",member.display_name,flush=True)
|
||||
await member.edit(nick=member.display_name[0:-1])
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
Reference in New Issue
Block a user