Tag: 1.21

Intermediate commits (oldest → newest):
- Start of Armia Hammera
- Enum fix
- small fx
- Optional argument fix
- xxx
- fix
- Fix
- ADdded smth
- finished secret dm handling
- bgfx
- safe
This commit is contained in:
2025-10-30 16:59:17 +01:00
parent 1a33e569ff
commit 7cb3d61d72
11 changed files with 119 additions and 49 deletions
+9
View File
@@ -32,6 +32,7 @@ class AdministrationModule(commands.Cog):
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:
@@ -51,6 +52,8 @@ class AdministrationModule(commands.Cog):
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.
@@ -135,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):
"""
+65 -12
View File
@@ -2,13 +2,16 @@
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,
@@ -19,12 +22,22 @@ from constants import (
OPENAICLIENT,
SPECJALNE_ZIEMNIACZKI,
WORD_REACTIONS,
MESSAGE_TABLE
)
DM_MODE = "assistant"
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")
@@ -59,11 +72,40 @@ class Events(commands.Cog):
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):
if isinstance(ctx.channel, discord.DMChannel):
pass
#secrets, assistant, echo, dm
#required parameter from list of values - assistant, dm_broadcast, echo
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):
@@ -105,15 +147,26 @@ class Events(commands.Cog):
for superfryta in SPECJALNE_ZIEMNIACZKI.values():
self.logger.info(superfryta[0])
if message.author.id == superfryta[0]:
await self.bot.process_commands(message)
await ai_functions.chat_with_assistant(message, superfryta[1])
return
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)
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
-1
View File
@@ -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}
-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.)
+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.
-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)