Now the regex is applied before all nonalphanumeric chars are deleted.
Additionally everything in square brackets will be deleted.
Signed-off-by: trivernis <trivernis@protonmail.com>
Menus can now be created as sticky menus. When new messages appear
in the channel, the sticky message will be resent to be the latest
one in the channel. It only get's recreated every ten seconds max
to avoid getting ratelimited.
To work with recreatable menus, the message handle returned by
the menu is now wrapped into an Arc<RwLock<>>.
Signed-off-by: trivernis <trivernis@protonmail.com>
The new enquote function is used to enquote command input.
For simplicity reasons the run_command_async doesn't read from
stdout and stderr separately anymore but uses `.output().await`
instead.
Signed-off-by: trivernis <trivernis@protonmail.com>
Introduced the new trait Shuffle that is implemented for
VecDeque and shuffles it. Previously the VecDeque
was shuffled with a function provided in the main utils module.
Signed-off-by: trivernis <trivernis@protonmail.com>
Add pagination to the spotify wrapper to retreive all
songs in a playlist.
Add a thread count lock to the youtube-dl process to avoid
starting too many at once.
Signed-off-by: trivernis <trivernis@protonmail.com>