feat: Add support for setting DNS record onchain
All checks were successful
Build Docker / Build Image (push) Successful in 2m50s
All checks were successful
Build Docker / Build Image (push) Successful in 2m50s
This commit is contained in:
26
shaker.py
26
shaker.py
@@ -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"))
|
||||||
Reference in New Issue
Block a user