tkboto/main.py

250 lines
13 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
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)