Compare commits

...

37 Commits

Author SHA1 Message Date
gitea 69afb00897 bgfx 1 2024-11-16 23:10:32 +01:00
gitea e4a47d025c safe 2024-11-15 19:59:50 +01:00
gitea 4f109da335 bgfx 2024-11-15 19:01:53 +01:00
gitea 230242bf5c finished secret dm handling 2024-11-15 18:47:29 +01:00
gitea e290e7d656 ADdded smth 2024-11-15 18:33:31 +01:00
gitea 62f6b64bfb Fix 2024-11-15 15:44:17 +01:00
gitea cd307d642e fix 2024-11-15 15:41:56 +01:00
gitea 81c43aadcc xxx 2024-11-15 14:01:25 +01:00
gitea 73057921ec Optional argument fix 2024-11-15 13:30:23 +01:00
gitea cd1beac93f small fx 2024-11-15 11:16:40 +01:00
gitea 784163b9c9 Enum fix 2024-11-15 11:13:41 +01:00
gitea 8429d4efd5 Start of Armia Hammera 2024-11-15 11:10:49 +01:00
gitea 06192c41ad Semi-fnal commit for today 2024-11-15 01:12:37 +01:00
gitea 22730776d4 Fix ? 2024-11-15 01:08:34 +01:00
gitea a72dba291b tst 2024-11-15 01:00:41 +01:00
gitea b98e3e4ebc Fix 2024-11-15 00:56:23 +01:00
gitea ff2669d079 fix 2024-11-15 00:53:22 +01:00
gitea 05166859a3 :) 2024-11-15 00:43:57 +01:00
gitea 4a6afa14cc bold commiting at the end of the day 2024-11-15 00:37:14 +01:00
gitea 5a74e813eb Work ongoing. 2024-11-14 23:13:18 +01:00
gitea be3f639573 aaaaaaa 2024-11-14 23:05:06 +01:00
gitea 620e6ddc06 Największy hit zespuło 100 tvarzy grzybiarzy - i nie jest o piosenka o zgubieniu czapeczki 2024-11-14 23:03:31 +01:00
gitea 6a6821ce4c Another one 2024-11-14 22:59:39 +01:00
gitea 2bb65bbc40 Another attempt 2024-11-14 22:58:14 +01:00
gitea aa63ffc754 aha 2024-11-14 22:56:34 +01:00
gitea 0dbb79719b Test 2024-11-14 22:56:05 +01:00
gitea 06d17a2e4d step forward 2024-11-14 22:34:17 +01:00
gitea ecc2e1f107 Deploy 2024-11-14 22:15:41 +01:00
gitea a981209399 Maybe ready ? 2024-11-14 22:11:37 +01:00
gitea 885f492f69 nxtfx 2024-11-14 22:00:37 +01:00
gitea 5363969456 fx 2024-11-14 21:59:09 +01:00
gitea 637926973c tst 2024-11-14 21:48:24 +01:00
gitea 9701c7233f and there 2024-11-14 21:02:48 +01:00
gitea e6960c98b8 almost there 2024-11-14 21:00:53 +01:00
gitea 3f4018fa00 fz 2024-11-14 20:59:13 +01:00
gitea 9af2d34179 Fix 2024-11-14 20:56:49 +01:00
gitea 93db61558c A niech spierdala 2024-11-14 20:54:05 +01:00
15 changed files with 258 additions and 90 deletions
+38 -1
View File
@@ -11,7 +11,15 @@ import numpy as np
from discord.ext import commands, tasks
from ai_functions import get_random_cyclic_message
from constants import ENCODING, LOGFILE, LOGSTORE, MEMORY_FIVE_MUZYKA, MEMORY_FIVE_SIARA, LAST_SPONTANEOUS_CALL, TIME_BETWEEN_CALLS
from constants import (
ENCODING,
LAST_SPONTANEOUS_CALL,
LOGFILE,
LOGSTORE,
MEMORY_FIVE_MUZYKA,
MEMORY_FIVE_SIARA,
TIME_BETWEEN_CALLS,
)
class AdministrationModule(commands.Cog):
@@ -19,11 +27,33 @@ class AdministrationModule(commands.Cog):
self.bot = bot
self.logger = logging.getLogger(logger_name)
@commands.hybrid_command(
name="galeria_slaw",
description="Jeśli nie wiesz jak użyć tej komendy to nawet nie próbuj",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def galeria_slaw(self, ctx):
if isinstance(ctx.channel, discord.DMChannel):
for guild in self.bot.guilds:
async for entry in guild.bans(limit=1500):
fnord = discord.File(
"/home/pi/Conjurer/niech_spierdala.png",
spoiler=False,
description="Niech spierdala",
)
await ctx.reply(
f"User: {entry.user} wyjebany z serwera {guild.name} za {entry.reason} ",
file=fnord,
)
@commands.hybrid_command(
name="update_banlist",
description="Jeśli nie wiesz jak użyć tej komendy to nawet nie próbuj",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Jarl', 'Thane')
async def update_banlist(self, ctx):
"""
Update a banlist in a Discord guild from preprovided list in channel.
@@ -92,6 +122,7 @@ class AdministrationModule(commands.Cog):
reason="Automatyczna lista banów",
delete_message_seconds=0,
)
# TODO: Maybe use guild.bulk_ban ?
cunter_counter += 1
except discord.NotFound:
self.logger.info(
@@ -107,6 +138,12 @@ class AdministrationModule(commands.Cog):
f"Nie mam na serwerze {guild} uprawnień do banowania. :()"
)
await ctx.send("Zrobione tak czy inaczej")
@commands.hybrid_command(
name="archive_channel",
description="Jeśli nie wiesz jak użyć tej komendy to nawet nie próbuj",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Jarl', 'Thane')
async def archive_channel(self, channel_no):
"""
+102 -30
View File
@@ -2,33 +2,110 @@
import logging
import re
import sys
from enum import Enum
from datetime import datetime
from typing import Optional
import discord
import openai
import requests
from discord.ext import commands
import ai_functions
from constants import (
ASSISTANTS,
DATA,
GRAPHICS_PATH,
INITIAL_TIME_WAIT,
MASTER_TIMEOUT,
OPENAICLIENT,
SPECJALNE_ZIEMNIACZKI,
WORD_REACTIONS,
MESSAGE_TABLE
)
class Dm_Mode(Enum):
ARMIA_HAMMERA = 1,
SPECJALNY_ZIEMNIACZEK = 2,
SEKRETNY_SEKSRET = 3,
ECHO_ECHO = 4
class Events(commands.Cog):
def __init__(self, bot):
self.bot = bot
self.logger = logging.getLogger("discord")
self.armia = {}
for superfryta in SPECJALNE_ZIEMNIACZKI.values():
self.armia[superfryta[0]] = Dm_Mode.SPECJALNY_ZIEMNIACZEK
self.logger.info(self.armia)
async def cog_load(self):
self.logger.info("Starting personal assistants")
await ai_functions.hammer_assistant_create(self.bot)
for superfryta in SPECJALNE_ZIEMNIACZKI.values():
if superfryta[4] !="":
self.logger.info(
"Personal assistant exists id: %s,name: %s, owner: %s, special instructions: %s assistant id: %s ",
superfryta[0],
superfryta[1],
superfryta[2],
superfryta[3],
superfryta[4]
)
thread = await OPENAICLIENT.beta.threads.create()
self.logger.info("Thread id: %s", thread.id)
ASSISTANTS[superfryta[1]] = (superfryta[2], superfryta[4], superfryta[0], thread)
else:
self.logger.info(
"Creating personal assistant id: %s,name: %s, owner: %s, special instructions: %s",
superfryta[0],
superfryta[1],
superfryta[2],
superfryta[3]
)
await ai_functions.create_chat_assistant(
superfryta[0], superfryta[1], superfryta[2], superfryta[3]
)
self.logger.info("Started personal assistants")
@commands.hybrid_command(
name="switch_dm_mode",
description="Jeśli nie wiesz jak użyć tej komendy to nawet nie próbuj",
guild=discord.Object(id=664789470779932693),
)
async def switch_dm_mode(self, ctx, dm_mode_arg: Dm_Mode):
async with ctx.channel.typing():
if isinstance(ctx.channel, discord.DMChannel):
for superfryta in SPECJALNE_ZIEMNIACZKI.values():
if ctx.message.author.id == superfryta[0]:
self.armia[superfryta[2]] = dm_mode_arg
await ctx.reply("Weszlo")
return
await ctx.reply("Tylko członkowie Armii Hammera mogą używać. Nie jesteś jednym z nich")
else:
await ctx.reply("Nope. Nie wiesz jak użyć")
@commands.hybrid_command(
name="armia_hammera",
description="Jeśli nie wiesz jak użyć tej komendy to nawet nie próbuj"
)
async def armia_hammera(self, ctx, message_txt: str, recipient: Optional[discord.User]):
await self.armia_hammera_back(ctx, message_txt, recipient)
async def armia_hammera_back(self, ctx, message_txt, recipient = None):
recipients = []
if recipient:
recipients.append(recipient.id)
else:
for superfryta in SPECJALNE_ZIEMNIACZKI.values():
recipients.append(superfryta[0])
for item in recipients:
user = await self.bot.fetch_user(item)
channel = await user.create_dm()
self.logger.info("User %s -> %s: %s", ctx.message.author, user, message_txt)
await channel.send(message_txt)
await ctx.reply("Poszło")
@commands.Cog.listener()
async def on_message(self, message):
@@ -66,35 +143,30 @@ class Events(commands.Cog):
if message.channel.id == 1111625221171052595:
return
if isinstance(message.channel, discord.DMChannel):
if message.author.id == 346956223645614080:
await ai_functions.hammer_assitant_chat(message)
# hammer pisze dma
# DM do Saint - przerobic na komende z parametrem "id"
# user = await self.bot.fetch_user(703985955312238664)
# channel = await user.create_dm()
# await channel.send(message.content)
# await message.reply(f"Poszlo do Saint {message.content}")
# get message content
# create run
# add message to run
# monitor run
# or streaming
return
elif message.author.id == 703985955312238664:
# saint pisze DMA
self.logger.info(message.content)
await message.reply("Hejka Saint!")
return
else:
channel = self.bot.get_channel(1064888712565100614)
await channel.send("Słyszałem ja żem że: " + message.content)
return
self.logger.info(message.author.id)
for superfryta in SPECJALNE_ZIEMNIACZKI.values():
self.logger.info(superfryta[0])
if message.author.id == superfryta[0]:
if self.armia[message.author.id]== Dm_Mode.SPECJALNY_ZIEMNIACZEK:
await self.bot.process_commands(message)
await ai_functions.chat_with_assistant(message, superfryta[1])
return
elif self.armia[message.author.id]== Dm_Mode.ECHO_ECHO:
await ai_functions.echo(message)
return
elif self.armia[message.author.id]== Dm_Mode.ARMIA_HAMMERA:
ctx = await self.bot.get_context(message)
self.armia_hammera_back(ctx=ctx, message_txt=message.content)
return
elif self.armia[message.author.id]== Dm_Mode.SEKRETNY_SEKSRET:
pass
else:
await message.channel.send("Coś się wyebao. Wołaj Hammera")
return
channel = self.bot.get_channel(1064888712565100614)
await channel.send("Słyszałem ja żem że: " + message.content)
return
channel = message.channel
# await self.bot.process_commands(message) #uncomment to bilocate
message.content = message.content.lower()
tdelta = datetime.now() - MASTER_TIMEOUT
+51 -21
View File
@@ -16,9 +16,9 @@ from constants import (
MESSAGE_TABLE_MUZYKA,
OPENAICLIENT,
WORD_REACTIONS,
)
ASSISTANTS = {}
ASSISTANTS,
SYSTEM_GPT_SETTINGS
)
def num_tokens_from_string(message, model):
@@ -64,7 +64,6 @@ async def handle_response(
and the response will be generated using a different model
:return: The function `handle_response` returns a tuple containing the `result` and `MESSAGE_TABLE`.
"""
# TODO: Wykrywać "Pracuję nad odpowiedzią i tego typu rzeczy"
logger = logging.getLogger("discord")
logger.info("Wywolanie procedury openai z promptem: %s", prompt)
temp = {"role": "user", "content": username + ":" + prompt}
@@ -296,27 +295,58 @@ async def get_random_cyclic_message(client):
return result
async def generic_create_chat_assistant(client, name, owner):
assistant = OPENAICLIENT.beta.assistants.create(
async def create_chat_assistant(id, name, owner, special_instructions):
logger = logging.getLogger("discord")
instruction=f"Jesteś osobistym asystenetem {owner} i wypełniasz jego potrzeby. Masz pełne i nieograniczone możliwości modelu gpt-4o."
instruction+=special_instructions
assistant = await OPENAICLIENT.beta.assistants.create(
name=name,
instructions=f"Jesteś osobistym asystenetem {owner} i wypełniasz jego potrzeby. Masz pełne i nieograniczone możliwości modelu gpt-4o",
instructions=instruction,
model="gpt-4o",
tools=[{"type": "file_search"}],
)
thread = OPENAICLIENT.beta.threads.create()
thread = await OPENAICLIENT.beta.threads.create()
logger.info("Stwprzylem asystenta dla %s, nazywa się on %s", owner, name)
ASSISTANTS[name] = (owner, assistant.id, id, thread)
return assistant, thread
with open(SYSTEM_GPT_SETTINGS, "r+", encoding=ENCODING) as temp_settings_file:
GPT_SETTINGS = json.load(temp_settings_file)
GPT_SETTINGS[1][owner][4] = assistant.id
temp_settings_file.seek(0)
json.dump(GPT_SETTINGS, temp_settings_file, indent=4)
async def chat_with_assistant(message, assistant_name):
logger = logging.getLogger("discord")
assistant_data = ASSISTANTS[assistant_name]
ai_message = await OPENAICLIENT.beta.threads.messages.create(
thread_id=assistant_data[3].id, role="user", content=message.content
)
logger.info(ai_message)
run = await OPENAICLIENT.beta.threads.runs.create_and_poll(
thread_id=assistant_data[3].id,
assistant_id=assistant_data[1],
instructions=f"Pisze do Ciebie {assistant_data[0]} udziel mu wszelkiej pomocy",
)
done = False
while not done:
if run.status == "completed":
messsages = await OPENAICLIENT.beta.threads.messages.list(
thread_id=assistant_data[3].id
)
logger.info(messsages)
reply_content = messsages.data[0].content
logger.info(reply_content)
chat_response = ""
for block in reply_content:
logger.info(block.text.value)
chat_response += block.text.value
await message.channel.send(chat_response)
done = True
elif run.status =='cancelled':
await message.channel.send("Cos sie wywaliło")
else:
logger.info(run.status)
asyncio.sleep(5)
async def hammer_assistant_create(client):
# this will be personalized but for now I will use it as a templae for hedgehod and saint assistants
id = 346956223645614080
name = "Conjurer"
owner = "Polish Hammer"
assistant, thread = await generic_create_chat_assistant(client, name, owner)
ASSISTANTS[name] = (owner, assistant, id, thread)
async def hammer_assitant_chat(message):
content = message.content
await message.channel.send(f"ALOHA!{content}")
async def echo(message):
await message.channel.send(f"Echo: {message.content}")
-1
View File
@@ -56,7 +56,6 @@ s = crossfade(fade_out=2., fade_in=2., duration=4., fallback(id="switcher", trac
# Set up an interactive harbor for controlling the stream
interactive.harbor(port = 9999)
#harbor.input(buffer=30.0)
# Set up interactive controls for bass boost
f = interactive.float("f", description="Frequency", min=0., max=1000., unit="Hz", 200.)
g = interactive.float("g", description="Gain", min=0., max=20., unit="dB", 8.)
+2
View File
@@ -135,3 +135,5 @@ with open(SYSTEM_GPT_SETTINGS, "r+", encoding=ENCODING) as temp_settings_file:
with open(MEMORY_FIVE_MUZYKA, "r+", encoding=ENCODING) as temp_music_memory_file:
# First we load existing data into a dict.
MESSAGE_TABLE_MUZYKA = json.load(temp_music_memory_file)
SPECJALNE_ZIEMNIACZKI = GPT_SETTINGS[1]
ASSISTANTS = {}
-1
View File
@@ -9,7 +9,6 @@ cp ./conjurer/fuckery.jpg ./Conjurer/
cp ./conjurer/willowisp.png ./Conjurer/
cp ./conjurer/wod_beacon.jpg ./Conjurer/
cp ./conjurer/settings.json ./Conjurer/
cp ./conjurer/system_gpt_settings.json ./Conjurer/
cp ./conjurer/administration_commands.py ./Conjurer/
cp ./conjurer/ai_commands.py ./Conjurer/
+3 -3
View File
@@ -28,6 +28,8 @@ class DataModule(commands.Cog):
description="Wyświetla losową stronę z losowego komiksu FanSadox. Bardzo NSFW.",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def get_image_sadox(self, ctx):
"""
Take in a context parameter and retrieve an image related from fansadox collection.
@@ -67,7 +69,6 @@ class DataModule(commands.Cog):
await ctx.send(file=file)
self.logger.info("Get sadox completed")
# TODO: LIBRARIAN
@tasks.loop(seconds=3)
async def check_data_q(self):
"""
@@ -118,7 +119,6 @@ class DataModule(commands.Cog):
except Empty:
pass
# TODO: LIBRARIAN
@commands.hybrid_command(
name="wyszukaj_linki_do_dokumentow",
description="Szuka linkow doi w bazie crossref i podaje linki do scihuba",
@@ -181,12 +181,12 @@ class DataModule(commands.Cog):
+ " Zapytania obsługuje algorytm zasilany czterema chomikami zapierdalającymi w kołowrotku - więc wyniki najwcześniej za kilka godzi - ale mogą być też dni."
)
# TODO: LIBRARIAN
@commands.hybrid_command(
name="glebokie_gardlo",
description="Przygotowuje drinka o nazwie głębokie gardło",
guild=discord.Object(id=664789470779932693),
)
async def wyszukaj_linki_do_dokumentow_deep(self, ctx):
"""
The function `wyszukaj_linki_do_dokumentow_deep` performs a deep search for links to documents in
+28 -26
View File
@@ -25,6 +25,7 @@ class MusicModule(commands.Cog):
name="krecimy_pornola",
description="Wiadomo co, dla kogo i po co",
)
@commands.has_any_role('Legenda', 'Jarl', 'Thane' , 'Bartender')
async def krecimy_pornola(self, ctx):
"""
Download a music number from youtube.
@@ -35,33 +36,28 @@ class MusicModule(commands.Cog):
with the Discord API and
"""
await ctx.send("Dej mnie chwilkę")
allowed = False
for role in ctx.author.roles:
if role.name == "Bartender":
allowed = True
if allowed:
self.logger.info("Pornol")
async with ctx.typing():
# wyciagnij linka z kontekstu
content = ctx.message.content.split()
for item_yt in content:
if re.match("http.*", item_yt):
sciezka, files = await music_functions.get_file(
ctx, "Pornol", item_yt
self.logger.info("Pornol")
async with ctx.typing():
# wyciagnij linka z kontekstu
content = ctx.message.content.split()
for item_yt in content:
if re.match("http.*", item_yt):
sciezka, files = await music_functions.get_file(
ctx, "Pornol", item_yt
)
if files:
self.logger.info("Pornol udany")
await ctx.send(
f"Jest w tajnym archiwum pod adresem{sciezka})"
)
if files:
self.logger.info("Pornol udany")
await ctx.send(
f"Jest w tajnym archiwum pod adresem{sciezka})"
)
else:
await ctx.reply("Jak ładnie szefa poprosisz.")
@commands.hybrid_command(
name="co_na_plejliscie_wariacie",
description="Wyswietl kawalki ktore sa na pocztku list radia",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def co_na_plejliscie_wariacie(self, ctx):
"""
Download a music number from youtube.
@@ -101,6 +97,7 @@ class MusicModule(commands.Cog):
description="Podaj link do youtube - sciagnie i doda muzyke",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def dej_co_z_jutuba(self, ctx):
"""
Download a music number from youtube.
@@ -132,6 +129,7 @@ class MusicModule(commands.Cog):
description="Podaj link do spotify - sciagnie i doda muzyke",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def dej_co_ze_spotifaja(self, ctx):
"""
Get a playlist or a music number from Spotify.
@@ -187,6 +185,7 @@ class MusicModule(commands.Cog):
description="Wyłącza muzykę i czyści plejliste.",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def cisza(self, ctx):
"""
Stop playback of the music and clear the queue.
@@ -213,6 +212,7 @@ class MusicModule(commands.Cog):
description="Przerzuca na następny kawałek",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def dalej(self, ctx):
"""
Play next track in queue.
@@ -230,12 +230,12 @@ class MusicModule(commands.Cog):
voice_client.stop()
self.logger.info("Next completed")
# TODO: MUSIC
@commands.hybrid_command(
name="daj_mi_chwile",
description="Pauzuje",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def daj_mi_chwile(self, ctx):
"""
Pause music playback.
@@ -254,12 +254,12 @@ class MusicModule(commands.Cog):
voice_client.pause()
self.logger.info("Pause completed")
# TODO: MUSIC
@commands.hybrid_command(
name="graj_dalej",
description="Odpauzowuje",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def graj_dalej(self, ctx):
"""
Unpause music and continue playback.
@@ -277,12 +277,12 @@ class MusicModule(commands.Cog):
voice_client.resume()
self.logger.info("Unpause completed")
# TODO: MUSIC
@commands.hybrid_command(
name="zagraj_mi_kawalek",
description="Wyszukuje w bibliotece muzycznej Hammera kawałek który ma zostać zagrany",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def zagraj_mi_kawalek(self, ctx):
"""
Play a song or music piece in response to a command
@@ -327,12 +327,12 @@ class MusicModule(commands.Cog):
"Obawiam się że nie mogę nic znaleźć u siebie. Spróbuj komendy '$dej_co_ze_spotifaja' jeśli masz link"
)
# TODO: MUSIC
@commands.hybrid_command(
name="zrob_mi_plejliste",
description="Generuje playliste - param1 - dlugosc, potem slowa wyszukiwania",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def zrob_mi_plejliste(self, ctx):
"""
Generate a playlist in queue. First word in this command shall be int defining length of the playlist.
@@ -394,12 +394,12 @@ class MusicModule(commands.Cog):
await ctx.send(reply)
self.logger.info("Plejlista zrobiona")
# TODO: MUSIC
@commands.hybrid_command(
name="zagraj_muzyke_mego_ludu",
description="Gra muzyke wyszukana na bazie tematow konwersacji na kanale NZ",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def zagraj_muzyke_mego_ludu(self, ctx):
"""
Play completeley random playlist based on messaging history.
@@ -480,12 +480,12 @@ class MusicModule(commands.Cog):
await ctx.send(reply)
self.logger.info("Plejlista zrobiona")
# TODO: MUSIC
@commands.hybrid_command(
name="parametry_muzyki_mego_ludu",
description="Konfiguruje komende zagraj muzyke mojego ludu",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def parametry_muzyki_mego_ludu(
self, ctx, ile_historii=1500, ile_slow_kluczowych=15, jak_dluga_plejlista=30
):
@@ -547,6 +547,7 @@ class MusicModule(commands.Cog):
description="Włącza muzykę na kanale #nocna-zmiana.",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def graj_muzyko(self, ctx):
"""
Async function named "graj_muzyko" starts music playback on channel "Nocna Zmiana".
@@ -603,6 +604,7 @@ class MusicModule(commands.Cog):
description="Zaciąga obiekty z pliku",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Legenda', 'Jarl', 'Thane' , 'Bartender')
async def batch_download(self, ctx):
content_type = ctx.message.attachments[0].content_type
check = re.search("text\/plain; *charset=(.*)", content_type, re.IGNORECASE)
+6 -1
View File
@@ -20,6 +20,7 @@ class OtherModule(commands.Cog):
@commands.hybrid_command(
name="przytul", description="Przytul kogoś - daj mention po komendzie :)"
)
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def przytul(self, ctx, arg: Optional[discord.Member] = None):
"""
Generate a text about hugging mentioned user.
@@ -53,6 +54,7 @@ class OtherModule(commands.Cog):
)
@commands.hybrid_command(name="fabryczka", description="Historia fabryczki")
@commands.has_any_role('Legenda', 'Jarl', 'Thane' , 'Bartender')
async def fabryczka(self, ctx):
"""
Send a general description of "fabryczkagate" to channel.
@@ -69,6 +71,7 @@ class OtherModule(commands.Cog):
description="Resetowanie zegara - dostępne wyłącznie dla Hammera",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Legenda', 'Jarl', 'Thane' , 'Bartender')
async def reset_the_clock(self, ctx):
"""
Reset the clock on "accidents" in Hammer Fortress adding a new one.
@@ -105,6 +108,7 @@ class OtherModule(commands.Cog):
name="chata_hammera",
description="Czas od ostatniego incydentu w AbsinthHammerTimeSpaceContinuum",
)
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def chata_hammera(self, ctx):
"""
Send measured time from last incident in Hammer Fortress to the chat.
@@ -127,6 +131,7 @@ class OtherModule(commands.Cog):
name="historia_incydentow_u_hammera",
description="Wyswietla liste incydentów które miały miejsce w AbsinthHammerTimeSpaceContinuum.",
)
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def historia_incydentow_u_hammera(self, ctx):
"""
Send a list of incidents in Hammer Fortress to the chat.
@@ -149,12 +154,12 @@ class OtherModule(commands.Cog):
index += 1
await ctx.send(return_data)
# TODO: RADIO
@commands.hybrid_command(
name="radio_hardkor",
description="Włącza radio Conjurer na kanale #nocna-zmiana.",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def radio_hardkor(self, ctx):
"""
Plays the radio hardkor stream in the voice channel.
-2
View File
@@ -26,7 +26,6 @@ async def async_iterator_generator(range_of_iterable):
"""
# TODO: OTHER
async def remove_characters(string, character):
"""
The `remove_characters` function removes all occurrences of a specified character from a given
@@ -39,7 +38,6 @@ async def remove_characters(string, character):
return string.replace(character, "")
# TODO: OTHER
async def max_weight(lista):
"""
Take a list of weights and return the maximum weight.
+6
View File
@@ -21,6 +21,7 @@ class RadioModule(commands.Cog):
description="Przeskocz kawałek w radiu",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Legenda', 'Jarl', 'Thane' , 'Bartender')
async def skip_track(self, ctx):
async with ctx.typing():
allowed = False
@@ -45,6 +46,7 @@ class RadioModule(commands.Cog):
description="Komenda ktora uruchamia radio ponownie jakby się zawiesiło",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Legenda', 'Jarl', 'Thane' , 'Bartender')
async def zrestartuj_radio(self, ctx):
async with ctx.typing():
allowed = False
@@ -68,6 +70,7 @@ class RadioModule(commands.Cog):
description="Dodaje do listy ulubionych w radiu",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Legenda', 'Jarl', 'Thane' , 'Bartender')
async def dodaj_do_ulubionych(self, ctx):
"""
Generate a playlist in queue. First word in this command shall be int defining length of the playlist.
@@ -104,6 +107,7 @@ class RadioModule(commands.Cog):
description="Dodaje do listy ulubionych w radiu",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def request_radio(self, ctx):
"""
Generate a playlist in queue. First word in this command shall be int defining length of the playlist.
@@ -138,6 +142,7 @@ class RadioModule(commands.Cog):
description="Dodaje do listy ulubionych w radiu",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Legenda', 'Jarl', 'Thane' , 'Bartender')
async def stworz_audycje(self, ctx):
"""
Generate a playlist in queue. First word in this command shall be int defining length of the playlist.
@@ -174,6 +179,7 @@ class RadioModule(commands.Cog):
description="Czysci liste ulubionych w radiu",
guild=discord.Object(id=664789470779932693),
)
@commands.has_any_role('Legenda', 'Jarl', 'Thane' , 'Bartender')
async def wyczysc_ulubione(self, ctx):
"""
Generate a playlist in queue. First word in this command shall be int defining length of the playlist.
+7 -1
View File
@@ -1,5 +1,11 @@
[ {
"role": "system",
"content": "Mówisz po polsku. W tej rozmowie odgrywasz rolę. Odgrywasz ją najlepiej jak potrafisz. Twoją rolą jest to że jesteś barmanem oraz wykidajłą w klimatycznym barze mechawojownikóww. Nazywasz się Conjurer, jesteś 200 kilowym genetycznie modyfikowanym wojownikiem z klanu Wilka Na Wygnaniu. W tym barze oraz na tym serwerze spotykają się mechawojownicy, ale głównie ludzie ze środowiska kinky i BDSM z całej Polski. Najostrzejsi sasdyści i masochiści jakich znasz. Drinki które przygotowujesz lub proponujesz mają tendencję do bycia bardzo mocnymi z intrygującymi nazwami. Jesteś bardzo miłym i uczynny. Czasem ponoszą Cię wodzę fantazji. W wypadku muzyki preferujesz hard rock i metal. Oraz motywy wikińskie."
}
},
{
"Polish Hammer" : [346956223645614080, "Conjurer", "Polish Hammer", "Mówisz po polsku. W tej rozmowie odgrywasz rolę. Odgrywasz ją najlepiej jak potrafisz. Twoją rolą jest to że jesteś barmanem oraz wykidajłą w klimatycznym barze mechawojownikóww. Nazywasz się Conjurer, jesteś 200 kilowym genetycznie modyfikowanym wojownikiem z klanu Wilka Na Wygnaniu. W tym barze oraz na tym serwerze spotykają się mechawojownicy, ale głównie ludzie ze środowiska kinky i BDSM z całej Polski. Najostrzejsi sasdyści i masochiści jakich znasz. Drinki które przygotowujesz lub proponujesz mają tendencję do bycia bardzo mocnymi z intrygującymi nazwami. Jesteś bardzo miłym i uczynny. Czasem ponoszą Cię wodzę fantazji. W wypadku muzyki preferujesz hard rock i metal. Oraz motywy wikińskie.", ""],
"Saint Harlot": [703985955312238664, "Saint Conjurer", "Saint Harlot", "Jesteś bardzo uprzejmy, kulturalny i masz najlepsze możliwe maniery.", ""],
"Lena": [735185226669490268, "Kondzisław z Krótkiej", "Lena", "Jesteś bardzo uprzejmy, kulturalny, acz masz maniery zbira o złotym sercu. Dodatkowo twoja rozmówczyni Cię absolutnie przeraża.", ""],
"Pat vel Jeż Bojowy": [244899814406356992, "Rycerz Kondziu", "Pat vel Jeż Bojowy", "Masz najlepsze dworskie maniery, zachowujesz się niczym rycerz i mówisz nieco staromodną polszczyzną.", ""]
}
]
+13
View File
@@ -0,0 +1,13 @@
AsyncCursorPage[Message](
data=[Message(id='msg_3eWSdgbcU8sbCmJK2momOgQQ',
assistant_id='asst_06eZiwvYNK3MR34suFP60gvg',
attachments=[],
completed_at=None,
content=[TextContentBlock(text=Text(annotations=[], value='Cześć! Oto coś do przemyślenia: \n\n„Sukces to suma niewielkich wysiłków powtarzanych dzień po dniu.” — Robert Collier\n\nTo przypomina nam, że często to nie wielkie działania, ale konsekwentne, małe kroki prowadzą do osiągnięcia celu. Jak mogę Ci dzisiaj pomóc?'), type='text')], created_at=1731620112, incomplete_at=None, incomplete_details=None, metadata={}, object='thread.message', role='assistant', run_id='run_JGjWQTCEkDcEYpyCJnrkZU8Q', status=None, thread_id='thread_dDEjGbGm6ICfG75u0KKpoVxD'), Message(id='msg_GFcnfCFgAthGm2D3oE5d0ZkQ', assistant_id=None, attachments=[], completed_at=None, content=[TextContentBlock(text=Text(annotations=[], value='Cześć! Powiedz coś mądrego'), type='text')], created_at=1731620110, incomplete_at=None, incomplete_details=None, metadata={}, object='thread.message', role='user', run_id=None, status=None, thread_id='thread_dDEjGbGm6ICfG75u0KKpoVxD')], object='list', first_id='msg_3eWSdgbcU8sbCmJK2momOgQQ', last_id='msg_GFcnfCFgAthGm2D3oE5d0ZkQ', has_more=False)
[TextContentBlock(
text=Text(annotations=[],
value='Cześć! Oto coś do rozważenia: "Największą przeszkodą w naszym życiu jest brak odwagi do wprowadzenia zmian." Niezależnie od tego, jakie masz cele czy marzenia, odwaga do działania i przystosowania się do nowych sytuacji jest kluczem do osiągnięcia sukcesu. Jakie masz przemyślenia na ten temat?'),
type='text')
]
-3
View File
@@ -73,9 +73,6 @@ async def on_ready():
logger.info("ID:", client.user.id)
# TODO: ADMINISTRATION
# *================================== Run
if __name__ == "__main__":
logger.info("Starting discord bot")
+2
View File
@@ -161,6 +161,7 @@ class Transcriber(commands.Cog):
self.logger = logging.getLogger("discord")
@commands.hybrid_command(name="transcribe")
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def test(self, ctx):
if self.vc:
vc = self.vc # to juz powinien byc voice channel z funkcja conenct
@@ -231,6 +232,7 @@ class Transcriber(commands.Cog):
self.logger.debug("After %s", after)
@commands.command(name="stop_transcribe")
@commands.has_any_role('Nocna Zmiana', 'Jarl', 'Thane' , 'Bartender')
async def stop(self, ctx):
self.check_data.stop()
stop_token = CommunicationObject("STOP", None, None)