From d1b8037a1a7409860fae718bfadb61323e3d18ab Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Thu, 9 Oct 2025 13:13:10 +1100 Subject: [PATCH] feat: Add support for setting DNS record onchain --- shaker.py | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/shaker.py b/shaker.py index e15aee0..1da133f 100644 --- a/shaker.py +++ b/shaker.py @@ -5,6 +5,7 @@ import dns.exception import dns.message import discord import json +import requests load_dotenv() @@ -33,7 +34,22 @@ def check_name(user_id: int, name: str) -> bool: except dns.exception.DNSException as e: print("DNS Exception") 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 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: if member.display_name[-1] != "/": await handle_role(member, False) - return + return False if check_name(member.id, member.display_name[0:-1]): await handle_role(member, True) @@ -70,4 +86,8 @@ async def check_member(member: discord.Member) -> bool: except Exception as e: print(e) await handle_role(member, False) - return False \ No newline at end of file + return False + +if __name__ == "__main__": + # Try to check name + print(check_name(481051831083073536,"xn--tya")) \ No newline at end of file