tkboto/main.py

268 lines
9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# General setup and stuff based on a tutorial by @TechWithTim on Youtube
import discord
from discord.ext import commands
from dotenv import load_dotenv
import os
from typing import Literal
import asyncio
from tajkna import tajkna
load_dotenv()
token = os.getenv('DISCORD_TOKEN')
svardare = {}
falnamae = {
"rasmi": "_rsmi",
"rs": "_rsmi",
"herus": "_hrus",
"hr": "_hrus",
"vaha": "_vaha",
"vh": "_vaha",
"kiki": "_kiki",
"ki": "_kiki",
"viosa": "_vios",
"vi": "_vios",
"kuro": "_kuro",
"kr": "_kuro"
}
szam = ('a','e','i','o','u')
mzam = ('b','c','d','f','g','h','j','k','l','m','n','p','q','r','4','s','t','v','w','x','y','z','0')
ozamnaj = ('x', 'j', 'c', 'q', 'y', 'p', 'r', 'b', '0') # zam ke jamkinaj na sjouzam
def ozv(kir):
for k in ozamnaj:
if k == kir:
return 0
return 1
def szomz(kir):
for k in szam:
if k == kir:
return 1
for k in mzam:
if k == kir:
return 0
return -1
while token is None: token = os.getenv('DISCORD_TOKEN')
intents = discord.Intents.default()
intents.message_content = True
# Client, syncing, and command tree setup stuff based off of a tutorial by @James_S on Youtube
class Client(commands.Bot):
pass
# async def on_ready(self):
# print("vona un")
# try:
# guild = discord.Object(id=)
# synced = await self.tree.sync(guild=guild)
# print(f'Synced {len(synced)} commands')
# except Exception as e:
# print(f'Error syncing commands: {e}')
#
# guild = discord.Object(id=)
client = Client(command_prefix='\0', intents=intents)
@client.tree.command(name="tk", description="Kavařı latınkaku na trekaku made")#, guild=guild)
async def tk(interaction: discord.Interaction, fras: str, fal: Literal["rasmi", "rs", "herus", "hr", "vaha", "vh", "kiki", "ki", "viosa", "vi", "kuro", "kr"] = "rasmi"):
if len(fras) > 2000:
await interaction.response.send_message("Obapıtka fras!", ephemeral=True)
return
fal = falnamae[fal]
trekaku = [""]
rofaj = ["fv\""]
des = ''
bidra = False
nil = False
falve = False
falfal = ""
ekso = -1
pitka = 0
kaj = set()
doko = len(fras)
kajkaku = ""
oharetk = True
obakaku = len(interaction.user.mention) + 6
for k in reversed(fras):
doko -= 1
if ekso == -1: k = k.lower()
if falve:
falfal = k + falfal
if len(falfal) >= 2:
if falfal in falnamae.keys():
for kk in range(len(rofaj)-1,0, -1):
if rofaj[kk] == "fv\"": break
elif len(rofaj[kk]) > 5 and rofaj[kk][5:] != "_andr" : rofaj[kk] = rofaj[kk][:-5] + falnamae[falfal]
else:
for i in range(doko, doko + 3): kaj.add(i)
falfal = ""
rofaj.append("fv\"")
falve = False
elif ekso > -1 and k != '\"': rofaj.append(k) ## elif
elif k == '|' or k == '!' or k == '.' or k == ',' or k == '\"' or k == ':' or k == ';' or k == '_':
if szomz(des) == 1:
if not bidra and not nil: rofaj.append(des + fal)
des = ''
elif des != '':
kaj.add(doko + 1)
des = ''
if pitka > 0:
for i in range(doko + 1, doko + pitka + 1):
kaj.add(i)
pitka = 0
if k == '|':
rofaj.append('\n')
elif k == '!':
rofaj.append("asob" + fal)
elif k == '.' or k == ',':
rofaj.append("vent" + fal)
elif k == '\"':
if ekso > -1:
ekso = -1
else:
ekso = doko
elif k == ':': falve = True
elif k == ';': rofaj.append("fv\"")
elif k == '_': rofaj.append("oxare_andr")
bidra = False
nil = False
elif szomz(k) == 1:
if k == des and nil:
rofaj.append('0'+des+fal)
des = ''
if szomz(des) == 0:
rofaj.append(k + des + fal)
bidra = True
elif szomz(des) == 1 and not nil:
if not bidra or k == des:
rofaj.append(des+fal)
else:
bidra = False
if pitka > 0:
for i in range(0, pitka):
rofaj.append(k+fal)
pitka = 0
des = k
nil = False
elif szomz(k) == 0:
if pitka > 0:
for i in range(doko + 1, doko + pitka + 1):
kaj.add(i)
pitka = 0
bidra = False
if szomz(des) == 1 and not nil:
rofaj.append(k+des+fal)
des = ''
else:
if szomz(des) == 0:
kaj.add(doko+1)
if ozv(k) == 1:
des = k
else:
kaj.add(doko)
des = ''
nil = False
elif k == ' ':
if szomz(des) == 1:
if not bidra and not nil: rofaj.append(des + fal)
nil = True
elif des != '':
kaj.add(doko+1)
des = ''
if pitka > 0:
for i in range(doko + 1, doko + pitka + 1):
kaj.add(i)
pitka = 0
bidra = False
elif k == '-':
pitka += 1
else:
if des != '': kaj.add(des)
kaj.add(doko)
bidra = False
if pitka > 0:
for i in range(doko, doko + pitka):
kaj.add(i)
if ekso > -1:
kaj.add(ekso)
if szomz(des) == 1:
if not bidra: rofaj.append(des+fal)
elif des != '':
kaj.add(doko)
while len(rofaj) > 0:
kir = rofaj[len(rofaj)-1]
if kir == 'fv\"': rofaj.pop()
elif len(kir) > 5: trekaku[0] += tajkna[rofaj.pop()]
else: trekaku[0] += rofaj.pop()
for k in trekaku[0]:
if k != '\n':
oharetk = False
if len(kaj) > 0:
for k in range(0, len(fras)):
if k in kaj:
if not k-1 in kaj: kajkaku += "**"
kajkaku += fras[k]
if not k+1 in kaj: kajkaku += "**"
else: kajkaku += fras[k]
while len(trekaku[len(trekaku)-1]) > 2000-obakaku:
lasa = 1999-obakaku
kesjteve = False
while trekaku[len(trekaku)-1][lasa] != '\n' and lasa > 999:
lasa -= 1
if lasa <= 999:
lasa = 1999-obakaku
while trekaku[len(trekaku)-1][lasa] != '>':
lasa -= 1
lasa += 1
else: kesjteve = True
if kesjteve: trekaku.append(trekaku[len(trekaku)-1][lasa+1:])
else: trekaku.append(trekaku[len(trekaku)-1][lasa:])
trekaku[len(trekaku)-2] = trekaku[len(trekaku)-2][:lasa]
if len(kaj) > 0:
await interaction.response.send_message("Gomen! Fštonaȷ un gı fxu kıřaȷn afto:\n" + kajkaku, ephemeral=True)
elif oharetk:
await interaction.response.send_message("Jam nıl kıřaȷn!", ephemeral=True)
else:
await interaction.response.send_message("Mj&a..", ephemeral=True, delete_after=0)
if interaction.user.id in svardare:
await svardare[interaction.user.id].reply(interaction.user.mention+': '+trekaku[0], silent=True)
svardare.pop(interaction.user.id)
else: await interaction.channel.send(interaction.user.mention+': '+trekaku[0], silent=True)
for t in range(1,len(trekaku)):
await interaction.channel.send('['+str(t+1)+']'+interaction.user.mention+': '+trekaku[t], silent=True)
@client.tree.command(name = "tktsujte", description = "Leřa oba trekaku")#, guild=guild)
async def tktsujte(interaction: discord.Interaction, tsujte: Literal["tsujte", "fal", "skala", "trekaku", "bototropos", "tastatropos", "deza"] = "tsujte"):
if tsujte == "skala": await interaction.response.send_message(file=discord.File("skala.png"), ephemeral=True)
else:
with open("tsujte.txt", encoding="utf_16_le") as m:
mlafu = m.read()
xazji = mlafu.find("&@%"+tsujte+'[')+len(tsujte)+5
ovari = mlafu[xazji:].find("]&@%")-1
teksti = mlafu[xazji:xazji+ovari]
await interaction.response.send_message(teksti, ephemeral=True)
@client.tree.context_menu(name="svar")#, guild=guild)
async def svar(interaction: discord.Interaction, message: discord.Message):
await interaction.response.send_message("svartı afto", ephemeral=True, delete_after=10)
if not interaction.user.id in svardare: svardare.update({interaction.user.id : message})
else: svardare[interaction.user.id] = message
await asyncio.sleep(10)
await interaction.edit_original_response(content = "svartınaȷ")
if interaction.user.id in svardare and svardare[interaction.user.id] == message: svardare.pop(interaction.user.id)
client.run(token)