268 lines
9 KiB
Python
268 lines
9 KiB
Python
# 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)
|