feat: Add support for setting DNS record onchain
All checks were successful
Build Docker / Build Image (push) Successful in 2m50s

This commit is contained in:
2025-10-09 13:13:10 +11:00
parent 5d9a49cc8b
commit d1b8037a1a

View File

@@ -5,6 +5,7 @@ import dns.exception
import dns.message import dns.message
import discord import discord
import json import json
import requests
load_dotenv() load_dotenv()
@@ -33,7 +34,22 @@ def check_name(user_id: int, name: str) -> bool:
except dns.exception.DNSException as e: except dns.exception.DNSException as e:
print("DNS Exception") print("DNS Exception")
print(e) print(e)
pass
# Alternatively check via hsd.hns.au
try:
response = requests.get(f"https://hsd.hns.au/api/v1/nameresource/{name}")
if response.status_code == 200:
data = response.json()
if 'records' not in data:
return False
for record in data['records']:
if record['type'] == 'TXT' and str(user_id) in record['txt']:
return True
except Exception as e:
print("HTTP Exception")
print(e)
return False return False
async def handle_role(member: discord.Member, shouldHaveRole: bool): async def handle_role(member: discord.Member, shouldHaveRole: bool):
@@ -59,7 +75,7 @@ async def handle_role(member: discord.Member, shouldHaveRole: bool):
async def check_member(member: discord.Member) -> bool: async def check_member(member: discord.Member) -> bool:
if member.display_name[-1] != "/": if member.display_name[-1] != "/":
await handle_role(member, False) await handle_role(member, False)
return return False
if check_name(member.id, member.display_name[0:-1]): if check_name(member.id, member.display_name[0:-1]):
await handle_role(member, True) await handle_role(member, True)
@@ -70,4 +86,8 @@ async def check_member(member: discord.Member) -> bool:
except Exception as e: except Exception as e:
print(e) print(e)
await handle_role(member, False) await handle_role(member, False)
return False return False
if __name__ == "__main__":
# Try to check name
print(check_name(481051831083073536,"xn--tya"))