mirror of
https://github.com/migatu/conjurer.git
synced 2026-07-14 21:38:38 +00:00
Tag: 0.8
Intermediate commits (oldest → newest): - Parametryzacja "muzyki mojego ludu" - Async wyszukaj - More async - And even more async - Async fix - Async - +1 - -1 - Hejo - Test chat gpt4 - Nope - Fix - Fix 2.0 - Fix - Additional lines of code
This commit is contained in:
@@ -6,4 +6,8 @@
|
|||||||
plugins
|
plugins
|
||||||
user_trunk.yaml
|
user_trunk.yaml
|
||||||
user.yaml
|
user.yaml
|
||||||
|
<<<<<<< HEAD
|
||||||
tmp
|
tmp
|
||||||
|
=======
|
||||||
|
tools
|
||||||
|
>>>>>>> c7dc465 (Parametryzacja "muzyki mojego ludu")
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
# To learn more about the format of this file, see https://docs.trunk.io/reference/trunk-yaml
|
# To learn more about the format of this file, see https://docs.trunk.io/reference/trunk-yaml
|
||||||
version: 0.1
|
version: 0.1
|
||||||
cli:
|
cli:
|
||||||
|
<<<<<<< HEAD
|
||||||
version: 1.20.1
|
version: 1.20.1
|
||||||
# Trunk provides extensibility via plugins. (https://docs.trunk.io/plugins)
|
# Trunk provides extensibility via plugins. (https://docs.trunk.io/plugins)
|
||||||
plugins:
|
plugins:
|
||||||
@@ -10,10 +11,44 @@ plugins:
|
|||||||
ref: v1.4.5
|
ref: v1.4.5
|
||||||
uri: https://github.com/trunk-io/plugins
|
uri: https://github.com/trunk-io/plugins
|
||||||
# Many linters and tools depend on runtimes - configure them here. (https://docs.trunk.io/runtimes)
|
# Many linters and tools depend on runtimes - configure them here. (https://docs.trunk.io/runtimes)
|
||||||
|
=======
|
||||||
|
version: 1.12.1
|
||||||
|
plugins:
|
||||||
|
sources:
|
||||||
|
- id: trunk
|
||||||
|
ref: v0.0.22
|
||||||
|
uri: https://github.com/trunk-io/plugins
|
||||||
|
lint:
|
||||||
|
enabled:
|
||||||
|
- actionlint@1.6.25
|
||||||
|
- markdownlint@0.35.0
|
||||||
|
- trivy@0.43.1
|
||||||
|
- trufflehog@3.44.0
|
||||||
|
- pylint
|
||||||
|
- codespell
|
||||||
|
- cspell
|
||||||
|
- git-diff-check
|
||||||
|
- eslint
|
||||||
|
- prettier
|
||||||
|
- semgrep
|
||||||
|
- autopep8
|
||||||
|
- bandit
|
||||||
|
- black
|
||||||
|
- flake8
|
||||||
|
- isort
|
||||||
|
- mypy
|
||||||
|
- pylint
|
||||||
|
- ruff
|
||||||
|
- semgrep
|
||||||
|
- yapf
|
||||||
|
- gitleaks
|
||||||
|
|
||||||
|
>>>>>>> c7dc465 (Parametryzacja "muzyki mojego ludu")
|
||||||
runtimes:
|
runtimes:
|
||||||
enabled:
|
enabled:
|
||||||
- node@18.12.1
|
- node@18.12.1
|
||||||
- python@3.10.8
|
- python@3.10.8
|
||||||
|
<<<<<<< HEAD
|
||||||
# This is the section where you manage your linters. (https://docs.trunk.io/check/configuration)
|
# This is the section where you manage your linters. (https://docs.trunk.io/check/configuration)
|
||||||
lint:
|
lint:
|
||||||
enabled:
|
enabled:
|
||||||
@@ -31,6 +66,8 @@ lint:
|
|||||||
- trivy@0.50.1
|
- trivy@0.50.1
|
||||||
- trufflehog@3.71.0
|
- trufflehog@3.71.0
|
||||||
- yamllint@1.35.1
|
- yamllint@1.35.1
|
||||||
|
=======
|
||||||
|
>>>>>>> c7dc465 (Parametryzacja "muzyki mojego ludu")
|
||||||
actions:
|
actions:
|
||||||
disabled:
|
disabled:
|
||||||
- trunk-announce
|
- trunk-announce
|
||||||
|
|||||||
@@ -38,10 +38,10 @@ import spotipy
|
|||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
from spotipy.oauth2 import SpotifyClientCredentials
|
from spotipy.oauth2 import SpotifyClientCredentials
|
||||||
|
|
||||||
import yt_dlp
|
|
||||||
from spotify_dl import spotify
|
|
||||||
from spotify_dl import youtube as youtube_download
|
from spotify_dl import youtube as youtube_download
|
||||||
|
|
||||||
|
from spotify_dl import spotify
|
||||||
|
|
||||||
Music_Config = TypedDict(
|
Music_Config = TypedDict(
|
||||||
"Music_Config",
|
"Music_Config",
|
||||||
{
|
{
|
||||||
@@ -68,6 +68,11 @@ MEMORY_FIVE_MUZYKA = ""
|
|||||||
SETTINGS_FILE = ""
|
SETTINGS_FILE = ""
|
||||||
ENCODING = ""
|
ENCODING = ""
|
||||||
GRAPHICS_PATH = ""
|
GRAPHICS_PATH = ""
|
||||||
|
MUZYKA_MOJEGO_LUDU_HISTORIA = 1500
|
||||||
|
MUZYKA_MOJEGO_LUDU_SLOWA_KLUCZOWE = 30
|
||||||
|
MUZYKA_MOJEGO_LUDU_PLAJLISTA = 30
|
||||||
|
|
||||||
|
|
||||||
# *=========================================== Platform Specific Predefines
|
# *=========================================== Platform Specific Predefines
|
||||||
|
|
||||||
if platform in ("linux", "linux2"):
|
if platform in ("linux", "linux2"):
|
||||||
@@ -187,7 +192,6 @@ async def on_ready():
|
|||||||
logger.debug("%s has connected to Discord!", client.user)
|
logger.debug("%s has connected to Discord!", client.user)
|
||||||
await client.change_presence(activity=discord.Game(name="Axe Throwing Darts"))
|
await client.change_presence(activity=discord.Game(name="Axe Throwing Darts"))
|
||||||
await client.tree.sync()
|
await client.tree.sync()
|
||||||
# await tree.sync(guild=discord.Object(id=Your guild id))
|
|
||||||
await check()
|
await check()
|
||||||
|
|
||||||
|
|
||||||
@@ -270,22 +274,25 @@ async def on_message(message):
|
|||||||
if "conjurer:" in message.content:
|
if "conjurer:" in message.content:
|
||||||
async with channel.typing():
|
async with channel.typing():
|
||||||
logger.debug("Procedura chatu")
|
logger.debug("Procedura chatu")
|
||||||
|
|
||||||
message.content = message.content.replace("conjurer: ", "")
|
message.content = message.content.replace("conjurer: ", "")
|
||||||
|
|
||||||
prompt = message.content
|
|
||||||
|
|
||||||
if message.author.nick:
|
if message.author.nick:
|
||||||
username = message.author.nick
|
username = message.author.nick
|
||||||
else:
|
else:
|
||||||
username = message.author.name
|
username = message.author.name
|
||||||
vykidailo = False
|
vykidailo = False
|
||||||
bartender = False
|
bartender = False
|
||||||
|
if kondziu_mentioned:
|
||||||
|
prompt = message.clean_content
|
||||||
|
else:
|
||||||
|
prompt = message.content
|
||||||
for role in message.author.roles:
|
for role in message.author.roles:
|
||||||
if role.name == "Vykidailo":
|
if role.name == "Vykidailo":
|
||||||
vykidailo = True
|
vykidailo = True
|
||||||
if role.name == "Bartender":
|
if role.name == "Bartender":
|
||||||
bartender = True
|
bartender = True
|
||||||
global MESSAGE_TABLE # pylint: disable=global-statement
|
global MESSAGE_TABLE # pylint: disable=global-statement
|
||||||
|
|
||||||
result, MESSAGE_TABLE = await handle_response(
|
result, MESSAGE_TABLE = await handle_response(
|
||||||
prompt, vykidailo, bartender, MESSAGE_TABLE, username, False
|
prompt, vykidailo, bartender, MESSAGE_TABLE, username, False
|
||||||
)
|
)
|
||||||
@@ -446,6 +453,20 @@ async def play(ctx, zamawial=None, arg=None):
|
|||||||
await ctx.send(result)
|
await ctx.send(result)
|
||||||
|
|
||||||
|
|
||||||
|
async def archive_channel(channel_no):
|
||||||
|
channel = client.get_channel(channel_no)
|
||||||
|
messages = [message async for message in channel.history(limit=None)]
|
||||||
|
path_newfile = (
|
||||||
|
f"{LOGSTORE}channeldump_{channel_no}_{datetime.now()}.json"
|
||||||
|
)
|
||||||
|
new_data = []
|
||||||
|
for message in messages:
|
||||||
|
pass
|
||||||
|
with open(path_newfile, "x", encoding=ENCODING) as new_file:
|
||||||
|
new_file.seek(0)
|
||||||
|
json.dump(new_data, new_file, indent=4)
|
||||||
|
|
||||||
|
|
||||||
async def check():
|
async def check():
|
||||||
"""Funkcja sprawdzająca czy grać następny kawałek."""
|
"""Funkcja sprawdzająca czy grać następny kawałek."""
|
||||||
while True:
|
while True:
|
||||||
@@ -564,14 +585,14 @@ async def handle_response(prompt, vykidailo, bartender, history, username, music
|
|||||||
# * extend bo 20 ostatnich
|
# * extend bo 20 ostatnich
|
||||||
if music:
|
if music:
|
||||||
history.append(message_table_muzyka[0])
|
history.append(message_table_muzyka[0])
|
||||||
history.extend(message_table_muzyka[-20:])
|
history.extend(message_table_muzyka[-15:])
|
||||||
else:
|
else:
|
||||||
history.append(MESSAGE_TABLE[0])
|
history.append(MESSAGE_TABLE[0])
|
||||||
history.extend(MESSAGE_TABLE[-20:])
|
history.extend(MESSAGE_TABLE[-15:])
|
||||||
logger.info("Historia wysłana:")
|
logger.info("Historia wysłana:")
|
||||||
logger.debug(history)
|
logger.debug(history)
|
||||||
response = await openai.ChatCompletion.acreate(
|
response = await openai.ChatCompletion.acreate(
|
||||||
model="gpt-3.5-turbo", messages=history
|
model="gpt-4", messages=history
|
||||||
)
|
)
|
||||||
await asyncio.sleep(10)
|
await asyncio.sleep(10)
|
||||||
result = ""
|
result = ""
|
||||||
@@ -819,11 +840,11 @@ async def wyszukaj(ctx, how_many=0, slowa_kluczowe=None):
|
|||||||
skip_start = 2
|
skip_start = 2
|
||||||
else:
|
else:
|
||||||
skip_start = 1
|
skip_start = 1
|
||||||
for word in word_list[skip_start:]:
|
async for word in async_iterator_generator(word_list[skip_start:]):
|
||||||
token_weight = len(word)
|
token_weight = len(word)
|
||||||
logger.info("Słowo kluczowe: %s", word)
|
logger.info("Słowo kluczowe: %s", word)
|
||||||
itr = 0
|
itr = 0
|
||||||
for file in music_file_list:
|
async for file in async_iterator_generator(music_file_list):
|
||||||
file = file.split(SEPARATOR_FILE_PATH)
|
file = file.split(SEPARATOR_FILE_PATH)
|
||||||
|
|
||||||
char_remove = [
|
char_remove = [
|
||||||
@@ -849,8 +870,8 @@ async def wyszukaj(ctx, how_many=0, slowa_kluczowe=None):
|
|||||||
"mp3",
|
"mp3",
|
||||||
]
|
]
|
||||||
all_words = []
|
all_words = []
|
||||||
for f_iter in file:
|
async for f_iter in async_iterator_generator(file):
|
||||||
for char in char_remove:
|
async for char in async_iterator_generator(char_remove):
|
||||||
f_iter = f_iter.replace(char, "")
|
f_iter = f_iter.replace(char, "")
|
||||||
tmp = f_iter.split()
|
tmp = f_iter.split()
|
||||||
all_words.extend(tmp)
|
all_words.extend(tmp)
|
||||||
@@ -861,7 +882,7 @@ async def wyszukaj(ctx, how_many=0, slowa_kluczowe=None):
|
|||||||
else:
|
else:
|
||||||
skip = 4
|
skip = 4
|
||||||
matched_times = 1
|
matched_times = 1
|
||||||
for itm in all_words[skip:]:
|
async for itm in async_iterator_generator(all_words[skip:]):
|
||||||
pingu += 1
|
pingu += 1
|
||||||
pattern = ".*" + word + ".*"
|
pattern = ".*" + word + ".*"
|
||||||
if re.match(pattern, itm, re.IGNORECASE):
|
if re.match(pattern, itm, re.IGNORECASE):
|
||||||
@@ -1530,6 +1551,7 @@ async def get_image_stable_diffusion(ctx):
|
|||||||
description="Gra muzyke wyszukana na bazie tematow konwersacji na kanale NZ",
|
description="Gra muzyke wyszukana na bazie tematow konwersacji na kanale NZ",
|
||||||
guild=discord.Object(id=664789470779932693),
|
guild=discord.Object(id=664789470779932693),
|
||||||
)
|
)
|
||||||
|
# trunk-ignore(pylint/R0912)
|
||||||
async def zagraj_muzyke_mego_ludu(ctx):
|
async def zagraj_muzyke_mego_ludu(ctx):
|
||||||
"""
|
"""
|
||||||
Play completeley random playlist based on messaging history.
|
Play completeley random playlist based on messaging history.
|
||||||
@@ -1541,7 +1563,7 @@ async def zagraj_muzyke_mego_ludu(ctx):
|
|||||||
"""
|
"""
|
||||||
stats = {}
|
stats = {}
|
||||||
if ctx:
|
if ctx:
|
||||||
stat_iter = get_stats(ctx, 1500)
|
stat_iter = get_stats(ctx, MUZYKA_MOJEGO_LUDU_HISTORIA)
|
||||||
async for name, how_many in stat_iter:
|
async for name, how_many in stat_iter:
|
||||||
if len(name) > 3:
|
if len(name) > 3:
|
||||||
stats[name] = how_many
|
stats[name] = how_many
|
||||||
@@ -1556,7 +1578,7 @@ async def zagraj_muzyke_mego_ludu(ctx):
|
|||||||
async with ctx.typing():
|
async with ctx.typing():
|
||||||
logger.info("Zaczynam szukać timestamp %s", datetime.now())
|
logger.info("Zaczynam szukać timestamp %s", datetime.now())
|
||||||
search_time_glob = datetime.now()
|
search_time_glob = datetime.now()
|
||||||
file = await wyszukaj(ctx=ctx, how_many=100, slowa_kluczowe=key_words[:30])
|
file = await wyszukaj(ctx=ctx, how_many=MUZYKA_MOJEGO_LUDU_PLAJLISTA, slowa_kluczowe=key_words[:MUZYKA_MOJEGO_LUDU_SLOWA_KLUCZOWE])
|
||||||
logger.info(
|
logger.info(
|
||||||
"Koniec szukania(timestamp %s zajęło %s",
|
"Koniec szukania(timestamp %s zajęło %s",
|
||||||
datetime.now(),
|
datetime.now(),
|
||||||
@@ -1596,6 +1618,38 @@ async def zagraj_muzyke_mego_ludu(ctx):
|
|||||||
logger.info("Plejlista zrobiona")
|
logger.info("Plejlista zrobiona")
|
||||||
|
|
||||||
|
|
||||||
|
# trunk-ignore(mypy/arg-type)
|
||||||
|
@client.hybrid_command(
|
||||||
|
name="parametry_muzyki_mego_ludu",
|
||||||
|
description="Konfiguruje komende zagraj muzyke mojego ludu",
|
||||||
|
guild=discord.Object(id=664789470779932693),
|
||||||
|
)
|
||||||
|
async def parametry_muzyki_mego_ludu(ctx, ile_historii=1500, ile_slow_kluczowych=30, jak_dluga_plejlista=30):
|
||||||
|
"""
|
||||||
|
The function `parametry_muzyki_mego_ludu` sets global variables for the number of history entries,
|
||||||
|
number of keywords, and length of playlist for a music application.
|
||||||
|
|
||||||
|
:param ctx: The `ctx` parameter is typically used in Discord.py, a Python library for creating
|
||||||
|
Discord bots. It represents the context of the command being executed, including information about
|
||||||
|
the message, the server, and the user who invoked the command
|
||||||
|
:param ile_historii: The parameter "ile_historii" represents the number of history items for the
|
||||||
|
music playlist, defaults to 1500 (optional)
|
||||||
|
:param ile_slow_kluczowych: The parameter "ile_slow_kluczowych" represents the number of keywords or
|
||||||
|
key phrases related to music that you want to include in your analysis or search, defaults to 30
|
||||||
|
(optional)
|
||||||
|
:param jak_dluga_plejlista: The parameter "jak_dluga_plejlista" determines the length of the
|
||||||
|
playlist. It specifies how many songs should be included in the playlist, defaults to 30 (optional)
|
||||||
|
"""
|
||||||
|
|
||||||
|
if ctx:
|
||||||
|
global MUZYKA_MOJEGO_LUDU_HISTORIA # pylint: disable=global-statement
|
||||||
|
MUZYKA_MOJEGO_LUDU_HISTORIA = ile_historii
|
||||||
|
global MUZYKA_MOJEGO_LUDU_SLOWA_KLUCZOWE # pylint: disable=global-statement
|
||||||
|
MUZYKA_MOJEGO_LUDU_SLOWA_KLUCZOWE = ile_slow_kluczowych
|
||||||
|
global MUZYKA_MOJEGO_LUDU_PLAJLISTA # pylint: disable=global-statement
|
||||||
|
MUZYKA_MOJEGO_LUDU_PLAJLISTA = jak_dluga_plejlista
|
||||||
|
|
||||||
|
|
||||||
# *================================== Run
|
# *================================== Run
|
||||||
# trunk-ignore(mypy/arg-type)
|
# trunk-ignore(mypy/arg-type)
|
||||||
client.run(TOKEN)
|
client.run(TOKEN)
|
||||||
|
|||||||
Reference in New Issue
Block a user