Compare commits
26 Commits
e391ce2607
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| ff23ce61ad | |||
| 75bb67bad0 | |||
| f83701507c | |||
| fd24acf82a | |||
| 75325f3b3e | |||
|
|
f3e3aefa20 | ||
|
|
2a3930ceb3 | ||
|
|
d0b3cf2a83 | ||
|
|
53ea64e38c | ||
| 3f58997353 | |||
|
|
6b0c5bebc6 | ||
|
|
5200bd2d86 | ||
|
|
c851825a24 | ||
| d8fa8e70c4 | |||
|
|
262d45905b | ||
|
|
128825109d | ||
| e9b4e374fe | |||
| 770ec4f44e | |||
|
|
568acb3a7d | ||
| 4332602887 | |||
| c9dc7e1d4c | |||
| 9629374738 | |||
| ecca4598c9 | |||
| c2892d3b25 | |||
| 52ccd54c84 | |||
| 5ea0776755 |
1
.gitignore
vendored
@@ -1 +1,2 @@
|
||||
/venv
|
||||
.env
|
||||
|
||||
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# ŠlincBot
|
||||
|
||||
Avantgardní open-source Telegramový/Diskordový bot ve stylu Davida Žlince
|
||||
6
env_template.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
API_KEY=KEYHERE # telegram bot key
|
||||
dAPI_KEY=KEYHERE # discord bot key
|
||||
CZCHAN_LLM_KEY=KEYHERE # LLM key
|
||||
|
||||
#save as .env
|
||||
#enjoy your own David
|
||||
BIN
hudba/Banánky v čokoládě.mp3
Normal file
BIN
hudba/Davidův ingliš rap.mp3
Normal file
BIN
hudba/Goon Goon.mp3
Normal file
BIN
hudba/HEJ.mp3
Normal file
BIN
hudba/Nebydlím na adrese Nová Vrchoslav 122.mp3
Normal file
BIN
hudba/Oj vej, oj vej, oj vej mí milý Thinkpajd.mp3
Normal file
BIN
hudba/On stál neotřesený ve světě plný zrýdců.mp3
Normal file
BIN
hudba/Pomsta Sudetská.mp3
Normal file
BIN
hudba/Reddit Paroháč.mp3
Normal file
BIN
hudba/Roman Posselt.mp3
Normal file
BIN
hudba/Scarristo je mé jméno.mp3
Normal file
BIN
hudba/Sudetskej Král.mp3
Normal file
BIN
hudba/Zrada.mp3
Normal file
BIN
hudba/heckingemmy (pravdivá verze).mp3
Normal file
BIN
hudba/heckingemmy.mp3
Normal file
BIN
hudba/Šárty Paroháč.mp3
Normal file
236
main-kord.py
Normal file
@@ -0,0 +1,236 @@
|
||||
import os
|
||||
import random
|
||||
import discord
|
||||
import requests
|
||||
|
||||
from dotenv import load_dotenv
|
||||
from discord.ext import commands
|
||||
|
||||
load_dotenv()
|
||||
|
||||
DISCORD_TOKEN = os.getenv("dAPI_KEY")
|
||||
CZCHAN_LLM_KEY = os.getenv("CZCHAN_LLM_KEY")
|
||||
|
||||
CHANCE = 1.0
|
||||
IMAGE_FOLDER = "obruzky"
|
||||
MUSIC_FOLDER = "hudba"
|
||||
MAX_SIZE = int(9.9 * 1024 * 1024) # 9,9mb myslím
|
||||
|
||||
intents = discord.Intents.default()
|
||||
intents.message_content = True
|
||||
|
||||
bot = commands.Bot(command_prefix="!", intents=intents)
|
||||
|
||||
VIDEO_EXT = (
|
||||
".mp4",
|
||||
".mov",
|
||||
".avi",
|
||||
".mkv",
|
||||
".webm",
|
||||
".3gp",
|
||||
".3gpp",
|
||||
".3g2",
|
||||
)
|
||||
|
||||
AUDIO_EXT = (
|
||||
".mp3",
|
||||
".wav",
|
||||
".ogg",
|
||||
".flac",
|
||||
".m4a",
|
||||
".opus",
|
||||
".3gp",
|
||||
".3gpp",
|
||||
".3g2",
|
||||
)
|
||||
|
||||
files = os.listdir(IMAGE_FOLDER)
|
||||
files2 = os.listdir(MUSIC_FOLDER)
|
||||
|
||||
PHRASES_ALL = [
|
||||
"Tak uědlej JINEEJ SKUPINA VOLE TY NUDLE ČÍNSKÁ POSRANA",
|
||||
"TY KURVO POSRANA ČDJ CIGAN Z USTÍ POSEDLÝ KRETEN ZE SLOVENSKO ESL",
|
||||
"kordman dicx face reveal\nKORMAN JE NEGR Z OHIA",
|
||||
"MÁM COKERA A KORDMANA PLNÝ ZUBY\nVOLE",
|
||||
"léky",
|
||||
"posedlej",
|
||||
"Léky tohle nejsou hovna\nJsou to střeva\nJsou to střeva po znásilnění",
|
||||
"jsem femboy z usteckého kraje a dam ti e-sex přes telefon",
|
||||
"mugshot ahh negr kočka",
|
||||
"Ano ale můžu být femgoy",
|
||||
"OYYYY",
|
||||
"Dělám to pro ženy",
|
||||
"I'm not from Nová Vrchoslav 122",
|
||||
"Kek faildox",
|
||||
"Posedlost s 15 letím klukem btw",
|
||||
"Honí si ho tomu nebo co?",
|
||||
"Jeden měsíc mám troon arc a tohle jse stane",
|
||||
"jsem validní femGOY",
|
||||
"xestro...",
|
||||
"jedy",
|
||||
"POMOC LIDI\nMĚ BOLÍ MOC PÉRO Z GOONOVANÍ\n\nbolí mě to vole tak MOC\nNEMUŽU PŘESTAT DOE",
|
||||
"Chtěl bych být foidka ale nemůžu doe je to nemorální",
|
||||
"I gonna rape you with my slovenian BWC you fucking serbian subhuman",
|
||||
"I have no friends, not online or offline\n\nI am not kidding, i can jump from my window, overdose or hang myself\nI can do it\nI gonna write a suicide note and post it on my main if that happens\nI dont care anymore",
|
||||
"Similliar o algx\nIm not Mario Kart pedo i promise",
|
||||
">Czech kuz?\n<Sort of.",
|
||||
]
|
||||
|
||||
PHRASES_SNEED = [
|
||||
"Tak uědlej JINEEJ SKUPINA VOLE TY NUDLE ČÍNSKÁ POSRANA",
|
||||
"MÁM COKERA A KORDMANA PLNÝ ZUBY\nVOLE",
|
||||
"Ano ale můžu být femgoy",
|
||||
"posedlej",
|
||||
"léky",
|
||||
"Chtěl bych být foidka ale nemůžu doe je to nemorální",
|
||||
"Posedlost s 15 letím klukem btw", # DODĚLŽI
|
||||
]
|
||||
|
||||
PHRASES_BRIMMY = [
|
||||
"TY KURVO POSRANA ČDJ CIGAN Z USTÍ POSEDLÝ KRETEN ZE SLOVENSKO ESL",
|
||||
"kordman dicx face reveal\nKORMAN JE NEGR Z OHIA",
|
||||
"léky",
|
||||
"posedlej",
|
||||
"I'm not from Nová Vrchoslav 122",
|
||||
"Kek faildox",
|
||||
"Jeden měsíc mám troon arc a tohle jse stane", # taky dodělži
|
||||
]
|
||||
|
||||
# kabel zlincerald command musí mít kontrolku pro velikost souboru protože nějaké soubory mají přes 10mb což kabel nepovoluje
|
||||
@bot.command()
|
||||
async def zlincerald(ctx):
|
||||
valid_files = []
|
||||
|
||||
for f in files:
|
||||
path = os.path.join(IMAGE_FOLDER, f)
|
||||
if os.path.getsize(path) <= MAX_SIZE:
|
||||
valid_files.append(f)
|
||||
|
||||
chosen = random.choice(valid_files)
|
||||
path = os.path.join(IMAGE_FOLDER, chosen)
|
||||
await ctx.send(file=discord.File(path))
|
||||
|
||||
@bot.command()
|
||||
async def hudba(ctx):
|
||||
valid_files = []
|
||||
|
||||
for f in files2:
|
||||
path = os.path.join(MUSIC_FOLDER, f)
|
||||
if os.path.getsize(path) <= MAX_SIZE:
|
||||
valid_files.append(f)
|
||||
|
||||
chosen = random.choice(valid_files)
|
||||
path = os.path.join(MUSIC_FOLDER, chosen)
|
||||
await ctx.send(file=discord.File(path))
|
||||
|
||||
def llm_api_call(messages):
|
||||
response = requests.post(
|
||||
"https://llm.czchan.org/v1/chat/completions",
|
||||
headers={"Authorization": f"Bearer {CZCHAN_LLM_KEY}"},
|
||||
json={
|
||||
"messages": messages,
|
||||
"mode": "chat",
|
||||
"character": "David Šlinc",
|
||||
"temperature": 0.3,
|
||||
"top_p": 0.9,
|
||||
"top_k": 40,
|
||||
"repetition_penalty": 1.2,
|
||||
"max_tokens": 512,
|
||||
},
|
||||
)
|
||||
|
||||
json_data = response.json()
|
||||
return json_data["choices"][0]["message"]["content"]
|
||||
|
||||
|
||||
message_store = {}
|
||||
|
||||
|
||||
def log(message):
|
||||
message_store[message.id] = {
|
||||
"user_id": message.author.id,
|
||||
"text": message.content,
|
||||
"reply_to": (
|
||||
message.reference.message_id
|
||||
if message.reference else None
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
async def maybe_send(ctx, phrases):
|
||||
if random.random() < CHANCE:
|
||||
msg = await ctx.reply(random.choice(phrases))
|
||||
log(msg)
|
||||
|
||||
|
||||
@bot.command()
|
||||
async def czchan(ctx):
|
||||
await maybe_send(ctx, PHRASES_ALL)
|
||||
|
||||
|
||||
@bot.command()
|
||||
async def sneedmaster(ctx):
|
||||
await maybe_send(ctx, PHRASES_SNEED)
|
||||
|
||||
|
||||
@bot.command()
|
||||
async def heckingemmy(ctx):
|
||||
await maybe_send(ctx, PHRASES_BRIMMY)
|
||||
|
||||
|
||||
@bot.command()
|
||||
async def ai(ctx, *, text):
|
||||
messages = [{"role": "user", "content": text}]
|
||||
|
||||
try:
|
||||
response = llm_api_call(messages)
|
||||
msg = await ctx.reply(response)
|
||||
log(msg)
|
||||
except:
|
||||
print("LLM error")
|
||||
|
||||
|
||||
@bot.event
|
||||
async def on_message(message):
|
||||
|
||||
if message.author.bot:
|
||||
return
|
||||
|
||||
log(message)
|
||||
|
||||
messages = []
|
||||
current_id = message.id
|
||||
should_reply = False
|
||||
|
||||
while current_id:
|
||||
data = message_store.get(current_id)
|
||||
if not data:
|
||||
break
|
||||
|
||||
if data["user_id"] == bot.user.id:
|
||||
should_reply = True
|
||||
role = "assistant"
|
||||
else:
|
||||
role = "user"
|
||||
|
||||
messages.append({
|
||||
"role": role,
|
||||
"content": data["text"]
|
||||
})
|
||||
|
||||
current_id = data["reply_to"]
|
||||
|
||||
messages.reverse()
|
||||
|
||||
if should_reply:
|
||||
try:
|
||||
response = llm_api_call(messages)
|
||||
msg = await message.reply(response)
|
||||
log(msg)
|
||||
except:
|
||||
print("LLM error")
|
||||
|
||||
await bot.process_commands(message)
|
||||
|
||||
|
||||
bot.run(DISCORD_TOKEN)
|
||||
269
main.py
@@ -1,38 +1,58 @@
|
||||
import os
|
||||
import telebot
|
||||
import random
|
||||
import telebot
|
||||
import requests
|
||||
|
||||
from dotenv import load_dotenv
|
||||
|
||||
load_dotenv()
|
||||
|
||||
API_KEY = os.getenv("API_KEY")
|
||||
bot = telebot.TeleBot(API_KEY)
|
||||
|
||||
print(API_KEY) # testžím
|
||||
CZCHAN_LLM_KEY = os.getenv("CZCHAN_LLM_KEY")
|
||||
|
||||
CHANCE = 1.0
|
||||
IMAGE_FOLDER = "obruzky"
|
||||
MUSIC_FOLDER = "hudba"
|
||||
|
||||
bot = telebot.TeleBot(API_KEY)
|
||||
|
||||
PHRASES_ALL = [
|
||||
"Tak uědlej JINEEJ SKUPINA VOLE TY NUDLE ČÍNSKÁ POSRANA",
|
||||
"TY KURVO POSRANA ČDJ CIGAN Z USTÍ POSEDLÝ KRETEN ZE SLOVENSKO ESL",
|
||||
"kordman dicx face reveal\nKORMAN JE NEGR Z OHIA",
|
||||
"MÁM COKERA A KORDMANA PLNÝ ZUBY\nVOLE",
|
||||
"léky",
|
||||
"posedlej",
|
||||
"Léky tohle nejsou hovna\nJsou to střeva\nJsou to střeva po znásilnění",
|
||||
"jsem femboy z usteckého kraje a dam ti e-sex přes telefon",
|
||||
"mugshot ahh negr kočka",
|
||||
"Ano ale můžu být femgoy",
|
||||
"OYYYY",
|
||||
"Dělám to pro ženy",
|
||||
"I'm not from Nová Vrchoslav 122",
|
||||
"Kek faildox",
|
||||
"Posedlost s 15 letím klukem btw",
|
||||
"Honí si ho tomu nebo co?",
|
||||
"Jeden měsíc mám troon arc a tohle jse stane",
|
||||
"jsem validní femGOY",
|
||||
"xestro...",
|
||||
"jedy"
|
||||
{"text":"Tak uědlej JINEEJ SKUPINA VOLE TY NUDLE ČÍNSKÁ POSRANA"},
|
||||
{"text":"TY KURVO POSRANA ČDJ CIGAN Z USTÍ POSEDLÝ KRETEN ZE SLOVENSKO ESL"},
|
||||
{"text":"kordman dicx face reveal\nKORMAN JE NEGR Z OHIA"},
|
||||
{"text":"MÁM COKERA A KORDMANA PLNÝ ZUBY\nVOLE"},
|
||||
{"text":"léky"},
|
||||
{"text":"posedlej"},
|
||||
{"text":"Léky tohle nejsou hovna\nJsou to střeva\nJsou to střeva po znásilnění"},
|
||||
{"text":"jsem femboy z usteckého kraje a dam ti e-sex přes telefon"},
|
||||
{"text":"mugshot ahh negr kočka"},
|
||||
{"text":"Ano ale můžu být femgoy"},
|
||||
{"text":"OYYYY"},
|
||||
{"text":"Dělám to pro ženy"},
|
||||
{"text":"I'm not from Nová Vrchoslav 122"},
|
||||
{"text":"Kek faildox", "file": "obruzky/nová vrchoslav 122.jpg"},
|
||||
{"text":"Posedlost s 15 letím klukem btw"},
|
||||
{"text":"Honí si ho tomu nebo co?"},
|
||||
{"text":"Jeden měsíc mám troon arc a tohle jse stane"},
|
||||
{"text":"jsem validní femGOY"},
|
||||
{"text":"xestro..."},
|
||||
{"text":"jedy"},
|
||||
{"text":"POMOC LIDI\nMĚ BOLÍ MOC PÉRO Z GOONOVANÍ\n\nbolí mě to vole tak MOC\nNEMUŽU PŘESTAT DOE"},
|
||||
{"text":"Chtěl bych být foidka ale nemůžu doe je to nemorální"},
|
||||
{"text":"I gonna rape you with my slovenian BWC you fucking serbian subhuman"},
|
||||
{"text":"I have no friends, not online or offline\n\nI am not kidding, i can jump from my window, overdose or hang myself\nI can do it\nI gonna write a suicide note and post it on my main if that happens\nI dont care anymore"},
|
||||
{"text":"Similliar o algx\nIm not Mario Kart pedo i promise"},
|
||||
{"text":">Czech kuz?\n<Sort of."},
|
||||
{"text":"faildoxx", "file": "obruzky/nová vrchoslav 122.jpg"},
|
||||
{"text":"jsem ústejkéj občan a tohle nosím do školy", "file":"obruzky/ústeckéj občan.png"},
|
||||
]
|
||||
|
||||
PHRASES_ZLINC = [
|
||||
"Ží N'SEN David Žlinc, es't nánčodnej těpek mžej škôl",
|
||||
"Ží přis upřilím",
|
||||
"UPLŽTE ŽRŽIDCE CECETKAKU",
|
||||
"es't faildoxx, ží tům nebylžím",
|
||||
"OBĽÚBENÁ BINCÁ", # nehotovží
|
||||
]
|
||||
|
||||
PHRASES_SNEED = [
|
||||
@@ -41,7 +61,8 @@ PHRASES_SNEED = [
|
||||
"Ano ale můžu být femgoy",
|
||||
"posedlej",
|
||||
"léky",
|
||||
"Posedlost s 15 letím klukem btw" # DODĚLŽI
|
||||
"Chtěl bych být foidka ale nemůžu doe je to nemorální",
|
||||
"Posedlost s 15 letím klukem btw", # DODĚLŽI
|
||||
]
|
||||
|
||||
PHRASES_BRIMMY = [
|
||||
@@ -51,32 +72,208 @@ PHRASES_BRIMMY = [
|
||||
"posedlej",
|
||||
"I'm not from Nová Vrchoslav 122",
|
||||
"Kek faildox",
|
||||
"Jeden měsíc mám troon arc a tohle jse stane" # taky dodělži
|
||||
"Jeden měsíc mám troon arc a tohle jse stane", # taky dodělži
|
||||
]
|
||||
|
||||
VIDEO_EXT = (
|
||||
".mp4",
|
||||
".mov",
|
||||
".avi",
|
||||
".mkv",
|
||||
".webm",
|
||||
".3gp",
|
||||
".3gpp",
|
||||
".3g2",
|
||||
) # 3GP JE ŽRÍJSKÉ A SUDETKEŠNÍ, ZRÁDCI POUŽÍVAJÍ MPEG
|
||||
AUDIO_EXT = (
|
||||
".mp3",
|
||||
".wav",
|
||||
".ogg",
|
||||
".flac",
|
||||
".m4a",
|
||||
".opus",
|
||||
".3gp",
|
||||
".3gpp",
|
||||
".3g2",
|
||||
)
|
||||
|
||||
files = os.listdir(IMAGE_FOLDER)
|
||||
files2 = os.listdir(MUSIC_FOLDER)
|
||||
|
||||
|
||||
# Tenhle diddy blud skenuje složku vždecke když posílá žlincerald lebkalebkalebka
|
||||
# ANX, ES'T ŽRÍJSKÝ JESENÍKEŠNÍ KÓD PŘE ZRÝDCIJI Z ČIČCICKU
|
||||
@bot.message_handler(commands=["zlincerald"])
|
||||
def send_random_image(message):
|
||||
chosen = random.choice(files)
|
||||
|
||||
path = os.path.join(IMAGE_FOLDER, chosen)
|
||||
|
||||
with open(path, "rb") as media:
|
||||
if chosen.lower().endswith(VIDEO_EXT):
|
||||
bot.send_video(message.chat.id, media)
|
||||
else:
|
||||
bot.send_photo(message.chat.id, media)
|
||||
|
||||
#šludba
|
||||
@bot.message_handler(commands=["hudba"])
|
||||
def send_random_song(message):
|
||||
chosen = random.choice(files2)
|
||||
path = os.path.join(MUSIC_FOLDER, chosen)
|
||||
|
||||
with open(path, "rb") as media:
|
||||
name = chosen.lower()
|
||||
|
||||
if name.endswith(AUDIO_EXT):
|
||||
bot.send_audio(message.chat.id, media)
|
||||
|
||||
elif name.endswith(VIDEO_EXT):
|
||||
bot.send_video(message.chat.id, media)
|
||||
|
||||
else:
|
||||
bot.send_document(message.chat.id, media)
|
||||
|
||||
# https://github.com/oobabooga/text-generation-webui/wiki/12-%E2%80%90-OpenAI-API#chat-completions-with-characters
|
||||
def llm_api_call(messages):
|
||||
# Mistral params:
|
||||
# "temperature": 0.3,
|
||||
# "top_p": 0.9,
|
||||
# "top_k": 40,
|
||||
# "repeat_penalty": 1.2,
|
||||
# "max_tokens": 512,
|
||||
|
||||
# Qwen params:
|
||||
# "temperature": 0.6,
|
||||
# "top_p": 0.8,
|
||||
# "top_k": 20,
|
||||
# "min_p": 0.0,
|
||||
# "presence_penalty": 1.5,
|
||||
# "repetition_penalty": 1.00,
|
||||
# "max_tokens": 512,
|
||||
|
||||
response = requests.post(
|
||||
"https://llm.czchan.org/v1/chat/completions",
|
||||
headers={"Authorization": f"Bearer {CZCHAN_LLM_KEY}"},
|
||||
json={
|
||||
"messages": messages,
|
||||
"mode": "chat",
|
||||
"character": "David Šlinc",
|
||||
"temperature": 0.3,
|
||||
"top_p": 0.9,
|
||||
"top_k": 40,
|
||||
"repetition_penalty": 1.2,
|
||||
"max_tokens": 512,
|
||||
},
|
||||
)
|
||||
|
||||
json = response.json()
|
||||
|
||||
return json["choices"][0]["message"]["content"]
|
||||
|
||||
|
||||
# NSA sledovací databáze
|
||||
message_store = {}
|
||||
|
||||
|
||||
def log(message):
|
||||
message_store[message.message_id] = {
|
||||
"user_id": message.from_user.id,
|
||||
"text": message.text or message.caption,
|
||||
"reply_to": (
|
||||
message.reply_to_message.message_id if message.reply_to_message else None
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
def maybe_send(message, phrases):
|
||||
if random.random() < CHANCE:
|
||||
bot.reply_to(message, random.choice(phrases))
|
||||
message = bot.reply_to(message, random.choice(phrases))
|
||||
log(message)
|
||||
|
||||
def send_phrase(message, PHRASES_ALL):
|
||||
item = random.choice(PHRASES_ALL)
|
||||
|
||||
@bot.message_handler(commands=['czchan'])
|
||||
text = item["text"]
|
||||
path = item.get("file")
|
||||
|
||||
if not path:
|
||||
bot.reply_to(message, text)
|
||||
return
|
||||
|
||||
with open(path, "rb") as media:
|
||||
lower = path.lower()
|
||||
|
||||
if lower.endswith(VIDEO_EXT):
|
||||
bot.send_video(message.chat.id, media, caption=text)
|
||||
|
||||
elif lower.endswith(AUDIO_EXT):
|
||||
bot.send_audio(message.chat.id, media, caption=text)
|
||||
|
||||
else:
|
||||
bot.send_photo(message.chat.id, media, caption=text)
|
||||
|
||||
@bot.message_handler(commands=["czchan"])
|
||||
def cmd_czchan(message):
|
||||
maybe_send(message, PHRASES_ALL)
|
||||
send_phrase(message, PHRASES_ALL)
|
||||
|
||||
|
||||
@bot.message_handler(commands=['sneedmaster'])
|
||||
@bot.message_handler(commands=["sneedmaster"])
|
||||
def cmd_sneed(message):
|
||||
maybe_send(message, PHRASES_SNEED)
|
||||
|
||||
|
||||
@bot.message_handler(commands=['heckingemmy'])
|
||||
@bot.message_handler(commands=["heckingemmy"])
|
||||
def cmd_brimmy(message):
|
||||
maybe_send(message, PHRASES_BRIMMY)
|
||||
|
||||
|
||||
@bot.message_handler(func=lambda m: True)
|
||||
def random_reply(message):
|
||||
if random.random() < CHANCE:
|
||||
bot.reply_to(message, random.choice(PHRASES_ALL))
|
||||
@bot.message_handler(commands=["ai"])
|
||||
def cmd_ai(message):
|
||||
actualmessage = " ".join(message.text.split(" ")[1:])
|
||||
messages = [{"role": "user", "content": actualmessage}]
|
||||
|
||||
try:
|
||||
response = llm_api_call(messages)
|
||||
message = bot.reply_to(message, response)
|
||||
log(message)
|
||||
except:
|
||||
print("Kurvá pósetí")
|
||||
|
||||
|
||||
@bot.message_handler(
|
||||
func=lambda m: True,
|
||||
content_types=["text", "photo", "video", "document", "audio", "voice"],
|
||||
)
|
||||
def reply(message):
|
||||
log(message)
|
||||
|
||||
messages = []
|
||||
current_id = message.message_id
|
||||
should_reply = False
|
||||
|
||||
while current_id:
|
||||
data = message_store.get(current_id)
|
||||
|
||||
if not data:
|
||||
break
|
||||
|
||||
if data["user_id"] == bot.user.id:
|
||||
should_reply = True
|
||||
role = "assistant"
|
||||
else:
|
||||
role = "user"
|
||||
|
||||
messages.append({"role": role, "content": data["text"]})
|
||||
current_id = data["reply_to"]
|
||||
|
||||
messages.reverse()
|
||||
|
||||
if should_reply:
|
||||
try:
|
||||
response = llm_api_call(messages)
|
||||
message = bot.reply_to(message, response)
|
||||
log(message)
|
||||
except:
|
||||
print("Kurvá pósetí")
|
||||
|
||||
|
||||
bot.polling()
|
||||
BIN
obruzky/Banánky.jpg
Normal file
|
After Width: | Height: | Size: 185 KiB |
BIN
obruzky/Bitva_o_Přerov.png
Normal file
|
After Width: | Height: | Size: 8.9 MiB |
BIN
obruzky/FAILDOX.MP4
Normal file
BIN
obruzky/IMG_1304.MP4
Normal file
BIN
obruzky/RÓ RIKA.mp4
Normal file
BIN
obruzky/SEEEEEEEEEEN.mp4
Normal file
BIN
obruzky/aurablud.png
Normal file
|
After Width: | Height: | Size: 2.2 MiB |
BIN
obruzky/budeš uplžen zrádce šločka.mp4
Normal file
BIN
obruzky/budeš uplžen zrádce.mp4
Normal file
BIN
obruzky/christpilled.mp4
Normal file
BIN
obruzky/co si o sobě myslíš.mp4
Normal file
BIN
obruzky/co to je za negra.mp4
Normal file
BIN
obruzky/co to je za svino.mp4
Normal file
BIN
obruzky/cézetkaci prohráli.mp4
Normal file
BIN
obruzky/david_angry.png
Normal file
|
After Width: | Height: | Size: 247 KiB |
BIN
obruzky/davidacigoši.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
obruzky/debilní kró.mp4
Normal file
BIN
obruzky/desetkrát.mp4
Normal file
BIN
obruzky/dirleromana.png
Executable file
|
After Width: | Height: | Size: 914 KiB |
BIN
obruzky/dnes tu máme legendu.mp4
Normal file
BIN
obruzky/donotredeem.mp4
Normal file
BIN
obruzky/groyped by heckingemmy and sneedmaster david.mp4
Normal file
BIN
obruzky/heckinbrimmy and sneedmaster hanged.png
Normal file
|
After Width: | Height: | Size: 322 KiB |
BIN
obruzky/hey buddy want some chocolate.mp4
Normal file
BIN
obruzky/hospůdka.png
Normal file
|
After Width: | Height: | Size: 2.3 MiB |
BIN
obruzky/its based and šlincpilled.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
obruzky/jsem velký fanoušek 1.mp4
Normal file
BIN
obruzky/jsem velký fanoušek 2.mp4
Normal file
BIN
obruzky/jsem velký fanoušek 3.mp4
Normal file
BIN
obruzky/jsem árijec.mp4
Normal file
BIN
obruzky/jsemžernoch.mp4
Normal file
BIN
obruzky/jsemžernoch.png
Normal file
|
After Width: | Height: | Size: 304 KiB |
BIN
obruzky/kok.mp4
Normal file
BIN
obruzky/lyricsvideo.mov
Normal file
BIN
obruzky/miluji šlince nesnáším zrádce.mp4
Normal file
BIN
obruzky/most.mp4
Normal file
BIN
obruzky/na nás židbound nemá.mp4
Normal file
BIN
obruzky/na tohle zrádci nemají.mp4
Normal file
BIN
obruzky/naser si madoko.mp4
Normal file
BIN
obruzky/nebydlím.mp4
Normal file
BIN
obruzky/neonacistická sračka.mp4
Normal file
BIN
obruzky/nidkdy jsi neměm šanci.mp4
Normal file
BIN
obruzky/nikni śi něľoľ šančí.mp4
Normal file
BIN
obruzky/nová vrchoslav 122.jpg
Normal file
|
After Width: | Height: | Size: 191 KiB |
BIN
obruzky/nácek.mp4
Normal file
BIN
obruzky/nádhodnýho tý z hó.mp4
Normal file
BIN
obruzky/náhodnýho týškovopa.mp4
Normal file
BIN
obruzky/nějajínčodnej těpek.mp4
Normal file
BIN
obruzky/oldubiná bincá.mp4
Normal file
BIN
obruzky/otaku.png
Normal file
|
After Width: | Height: | Size: 626 KiB |
BIN
obruzky/ovčvěná.mp4
Normal file
BIN
obruzky/pomstu sudetskou.mp4
Normal file
BIN
obruzky/posetí všečný zabiju.mp4
Normal file
BIN
obruzky/posranzí zredzí a gigzí.mp4
Normal file
BIN
obruzky/pósedlí pósedlí pósedlí.mp4
Normal file
BIN
obruzky/přeste.mp4
Normal file
BIN
obruzky/rip zezh.mp4
Normal file
BIN
obruzky/sakra ty byle.mp4
Normal file
BIN
obruzky/shoutout david šlinc.mp4
Normal file
BIN
obruzky/snédnegra.mp4
Normal file
BIN
obruzky/souboj.mp4
Normal file
BIN
obruzky/stovicavicá.png
Normal file
|
After Width: | Height: | Size: 2.3 MiB |
BIN
obruzky/sudeckešní nějmec.mp4
Normal file
BIN
obruzky/svině ukrajinská dostaneš.mp4
Normal file
BIN
obruzky/svítlo.mp4
Normal file
BIN
obruzky/tebe taky židpiťa mrdko posranží.mp4
Normal file
BIN
obruzky/to je možné.mp4
Normal file
BIN
obruzky/tohle není hra.mp4
Normal file
BIN
obruzky/trans práva.mp4
Normal file
BIN
obruzky/trans pěržíva.mp4
Normal file
BIN
obruzky/ty debiláš.mp4
Normal file
BIN
obruzky/ty parchant.mp4
Normal file
BIN
obruzky/upalte.mp4
Normal file
BIN
obruzky/vy posedlí zrádci.mp4
Normal file
BIN
obruzky/yuri je buzna.png
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
obruzky/yurigod 01.jpg
Normal file
|
After Width: | Height: | Size: 134 KiB |
BIN
obruzky/yurigod 02.jpg
Normal file
|
After Width: | Height: | Size: 22 KiB |