250 lines
13 KiB
Python
250 lines
13 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
|
||
from tajkna import tajkna
|
||
|
||
load_dotenv()
|
||
token = os.getenv('DISCORD_TOKEN')
|
||
|
||
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='!', 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"):
|
||
fras = fras.lower()
|
||
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 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)
|
||
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", "tastatropos", "deza"] = "tsujte"):
|
||
if tsujte == "tsujte": await interaction.response.send_message("## Tsuȷte\n-# /tktsujte xyz\n\nTsujte: Tumam tsuȷ tsuȷte na /tktsujte (afto)\nFal: Tumam tsuȷ fal\nSkala: Skala tsuȷ trekakuzam\nTrekaku: Leřa kaku trekaku\nTastatropos: Tropos per tasta trekaku\nDeza: Tropos per bloge deza tsuȷ boto", ephemeral=True)
|
||
elif tsujte == "fal": await interaction.response.send_message("## Fal\n__Rasmı__ [rs]:\n- ffj&ka: <:a_rsmi:1538685827918331904>\n- luna: <:luna_rsmi:1539053107370004541>\n- sten: <:sten_rsmi:1539053106304909362>\n- tsunagalen: <:tsunaga_rsmi:1539500632866816060>\n__Heřus__ [hr]:\n- ffj&ka: <:a_hrus:1539050541189959780>\n- luna: <:luna_hrus:1539053105159606382>\n- sten: <:sten_hrus:1539053104266354688>\n- tsunagalen: <:tsunaga_hrus:1539500631906197504>\n__Vaha__ [vh]:\n- ffj&ka: <:a_vaha:1539755946224390145>\n- luna: <:luna_vaha:1539869603545489528>\n- sten: <:sten_vaha:1539869602639519754>\n- tsunagalen: <:tsunaga_vaha:1539869601356185600>\n__Kıkı__ [ki]:\n- ffj&ka: <:a_kiki:1540075636528521376>\n- luna: <:luna_kiki:1540075394361729055>\n- sten: <:sten_kiki:1540075393435041852>\n- tsunagalen: <:tsunaga_kiki:1540075637660983386>\n__Ffıosa__ [vi]:\n- ffj&ka: <:a_vios:1540439687553097838>\n- luna: <:luna_vios:1540439405502664794>\n- sten: <:sten_vios:1540439406417289388>\n- tsunagalen: <:tsunaga_vios:1540439621354131568>\n__Kuřo__ [kr]:\n- ffj&ka: <:a_kuro:1542587743656218737>\n- luna: <:luna_kuro:1542587478605561907>\n- sten: <:sten_kuro:1542587479624908840>\n- tsunagalen: <:tsunaga_kuro:1542587474197348513>", ephemeral=True)
|
||
elif tsujte == "skala": await interaction.response.send_message(file=discord.File("skala.png"), ephemeral=True)
|
||
elif tsujte == "trekaku": await interaction.response.send_message("## Trekaku\nHaȷzja trekaku __tre__kaku grÿn jam tre fal mono: ffj&ka (<:a_rsmi:1538685827918331904>), luna (<:luna_rsmi:1539053107370004541>), a sten (<:sten_rsmi:1539053106304909362>). Nasıkı hê napaŷat per maxa 185 taȷkna.\n### Kotolı\n- Jıtzam: taȷkna ke jam medzam na xazjı (ttb \"ta\")\n- Sjouzam: taȷkna ke jam medzam na ovařı (ttb \"ak\")\n- Jıtsjou: sılba ke jam jıtzam a sjouzam (ttb \"tak\")\n- Tolkaffj&ka: sılba ke jamnaȷ medzam (ttb \"a\")\n- Atamasten: sten oba ffj&ka (<:atamasten_ttb:1539388726830956704>)\n- Jalakasten: sten una ffj&ka (<:jalakasten_ttb:1539388729402335413>)\n- Obasten: sten oba luna (<:obasten_ttb:1539388723244965969>)\n- Unasten: sten una luna (<:unasten_ttb:1539388722246852669>)\n- Iñesten: sten ıñe luna (<:injesten_ttb:1539388724352389120>)\n- Bsten: sten una ffj&katama (<:bsten_ttb:1539388721248346133>)\n- Psten: sten oba ffj&kalaka (<:psten_ttb:1539388719952429128>)\n- Nılzam: ffj&ka ke jam sten uten luna (<:0a_rsmi:1538685641737379931>)\n### Ffj&ka\nJam taȷkna al ffj&ka per bloge sebjazam na sılba. Fansuka sebjazam aker na ffj&ka (leřakı mıt skala). Lı jam taȷkna uten luna os sten, sıt zam sořı sebjazam mono. Kakukı plus tolkaffj&ka za jıtzam os tolkaffj&ka per pıtkaoc sebjazam.\n### Luna\nJam eksı medzamklaanı ke blogena lunadoko (leřakı mıt skala). Jam kjeře kjeřeklaanı (ke jam kjeře medzam natont) a nı treklaanı (ke jam tre medzam natont).\n### sten\nJam klaanı tont joku tre kjeře medzam ke blogena stendoko. Na skala, kakuyena medzamtumam na paŷat sama ke taȷknatumam tsuȷ stendoko. Gjakenakı joku medzam (utensten a obasten na kjeřeklaanı a al na treklaanı) per maxa sjouzam (leřakı gjaketropos mıt skala). Maxakı jıtsjou mıt jıtzam, za sjouzam. (ttb jam <:ta_rsmi:1538685776445964298> (ta) a <:ak_rsmi:1542582828590567485> (ak) na <:ta_rsmi:1538685776445964298><:ak_rsmi:1542582828590567485> (tak)). Nasıkı tolkaffj&ka melan jıtsjou per pıtkaoc sebjazam. Æn, nasıkı nılzam per lasa sebjazam kundr pıtkaoc os jıtsjou.", ephemeral=True)
|
||
elif tsujte == "tastatropos": await interaction.response.send_message("## Tastatropos\nTastakı trekaku mıt /tk [latınkaku] [fal] (musnaȷ sentaku fal, kakuyena na rasmıfal sentakunaȷlı). Leřakı ŵam na zam a latınkıřaȷn mıt skala, a sekı fal mıt /tktsujte fal. Jamæn joku taȷkna andr per apu kaku:\n- [ ] (Speȷsutaȷkna): Plÿvıktı jıtzam kena sjouzam na tkboto, sıt blı joku jıtzam dekılı na tsataȷn (ttb blı \"aku\" <:a_rsmi:1538685827918331904><:ku_rsmi:1538685662532997130>, <:ak_rsmi:1542582828590567485><:u_rsmi:1538685825750016051> naȷ). Lı vıl andr, sıt brÿkı speȷsutaȷkna per lasa (ttb, blı \"ak u\" <:ak_rsmi:1542582828590567485><:u_rsmi:1538685825750016051>). Brÿkı speȷsutaȷkna per nılzam melan sebjazam æn.\n- [-]: Nasıkı per pıtkaoc sebjazam lı vıl nadlabdel plus sebjazamtasta (tatœ sama \"xuuu\" \"xu--\").\n- [|]: Nasıkı per suřuk kotosen.\n- [.] os [,]: Nasıkı per ventpık (<:vent_rsmi:1539673387561918575>).\n- [!]: Nasıkı per asobpık (<:asob_rsmi:1539673386093907978>).\n- [\" \"]: Nasıkı per škekso trekaku.\n- [0-]: Brÿkı 0 nalık medzam per maxa nilzam.\n- [:] a [;]: Nasıkı : za falxobıtnamæ (lesekı za namæ na /tktsujte fal) per kavařı kıřaȷnfal za. Nasıkı ; per suřuk na snano fal made.\n- [_] Nasıkı per maxa oxaře kıřaȷn (per sımproc skalamaxa os kıřaȷnrısomaxa osos).", ephemeral=True)
|
||
elif tsujte == "deza": await interaction.response.send_message("Blogekı deza na gnařısu na https://git.viossa.net/gnarisu/tkboto/issues dezalı. Dezapu no dankı! ^-^", ephemeral=True)
|
||
|
||
client.run(token)
|