Compare commits
4 Commits
025e5fc653
...
286df89085
Author | SHA1 | Date | |
---|---|---|---|
286df89085 | |||
081610150d | |||
6e43b8a71a | |||
d81821bc51 |
@ -1,6 +1,7 @@
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
import arguments
|
import arguments
|
||||||
|
|
||||||
import commands
|
import commands
|
||||||
import utils
|
import utils
|
||||||
|
|
||||||
@ -16,14 +17,27 @@ async def clear(message):
|
|||||||
type=lambda c: arguments.range_type(c, min=1, max=1000),
|
type=lambda c: arguments.range_type(c, min=1, max=1000),
|
||||||
help="amount of messages to delete",
|
help="amount of messages to delete",
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
group = parser.add_mutually_exclusive_group()
|
||||||
|
group.add_argument(
|
||||||
"-r",
|
"-r",
|
||||||
"--regex",
|
"--regex",
|
||||||
required=False,
|
required=False,
|
||||||
help="delete messages with content matching this regex",
|
help="delete messages with content matching this regex",
|
||||||
)
|
)
|
||||||
|
group.add_argument(
|
||||||
|
"-c",
|
||||||
|
"--contains",
|
||||||
|
required=False,
|
||||||
|
help="delete messages with content containing this substring",
|
||||||
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-i",
|
"-i",
|
||||||
|
"--case-insensitive",
|
||||||
|
action="store_true",
|
||||||
|
help="ignore case sensitivity when deleting messages",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-a",
|
||||||
"--author-id",
|
"--author-id",
|
||||||
type=int,
|
type=int,
|
||||||
action="append",
|
action="append",
|
||||||
@ -44,10 +58,19 @@ async def clear(message):
|
|||||||
if not (args := await parser.parse_args(message, tokens)):
|
if not (args := await parser.parse_args(message, tokens)):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
regex = None
|
||||||
|
if r := args.regex:
|
||||||
|
regex = re.compile(r, re.IGNORECASE if args.case_insensitive else 0)
|
||||||
|
|
||||||
def check(m):
|
def check(m):
|
||||||
c = []
|
c = []
|
||||||
if r := args.regex:
|
if regex:
|
||||||
c.append(re.match(r, m.content))
|
c.append(regex.search(m.content))
|
||||||
|
if s := args.contains:
|
||||||
|
if args.case_insensitive:
|
||||||
|
c.append(s.lower() in m.content.lower())
|
||||||
|
else:
|
||||||
|
c.append(s in m.content)
|
||||||
if i := args.author_id:
|
if i := args.author_id:
|
||||||
c.append(m.author.id in i)
|
c.append(m.author.id in i)
|
||||||
if args.reactions:
|
if args.reactions:
|
||||||
|
@ -44,6 +44,12 @@ async def queue_or_play(message):
|
|||||||
action="store_true",
|
action="store_true",
|
||||||
help="remove all queued songs",
|
help="remove all queued songs",
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-n",
|
||||||
|
"--now",
|
||||||
|
action="store_true",
|
||||||
|
help="play the specified song immediately",
|
||||||
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-t",
|
"-t",
|
||||||
"--remove-title",
|
"--remove-title",
|
||||||
@ -103,6 +109,10 @@ async def queue_or_play(message):
|
|||||||
return
|
return
|
||||||
|
|
||||||
queued = youtubedl.QueuedSong(player, message.author.id)
|
queued = youtubedl.QueuedSong(player, message.author.id)
|
||||||
|
|
||||||
|
if args.now:
|
||||||
|
players[message.guild.id].queue_add_front(queued)
|
||||||
|
else:
|
||||||
players[message.guild.id].queue_add(queued)
|
players[message.guild.id].queue_add(queued)
|
||||||
|
|
||||||
if (
|
if (
|
||||||
@ -111,6 +121,9 @@ async def queue_or_play(message):
|
|||||||
):
|
):
|
||||||
await utils.reply(message, f"**0.** {queued.format()}")
|
await utils.reply(message, f"**0.** {queued.format()}")
|
||||||
play_next(message)
|
play_next(message)
|
||||||
|
elif args.now:
|
||||||
|
message.guild.voice_client.stop()
|
||||||
|
await utils.reply(message, f"**0.** {queued.format()}")
|
||||||
else:
|
else:
|
||||||
await utils.reply(
|
await utils.reply(
|
||||||
message,
|
message,
|
||||||
|
15
youtubedl.py
15
youtubedl.py
@ -58,6 +58,9 @@ class QueuedPlayer:
|
|||||||
def queue_add(self, item):
|
def queue_add(self, item):
|
||||||
self.queue.append(item)
|
self.queue.append(item)
|
||||||
|
|
||||||
|
def queue_add_front(self, item):
|
||||||
|
self.queue.insert(0, item)
|
||||||
|
|
||||||
|
|
||||||
class QueuedSong:
|
class QueuedSong:
|
||||||
def __init__(self, player, queuer):
|
def __init__(self, player, queuer):
|
||||||
@ -71,16 +74,12 @@ class QueuedSong:
|
|||||||
)
|
)
|
||||||
|
|
||||||
def format_duration(self, duration: int) -> str:
|
def format_duration(self, duration: int) -> str:
|
||||||
segments = []
|
|
||||||
hours, duration = divmod(duration, 3600)
|
hours, duration = divmod(duration, 3600)
|
||||||
if hours > 0:
|
|
||||||
segments.append(hours)
|
|
||||||
minutes, duration = divmod(duration, 60)
|
minutes, duration = divmod(duration, 60)
|
||||||
if minutes > 0:
|
segments = [hours, minutes, duration]
|
||||||
segments.append(minutes)
|
if len(segments) == 3 and segments[0] == 0:
|
||||||
if duration > 0:
|
del segments[0]
|
||||||
segments.append(duration)
|
return f"{':'.join(f'{s:0>2}' for s in segments)}"
|
||||||
return f"{':'.join(str(s) for s in segments)}"
|
|
||||||
|
|
||||||
|
|
||||||
def __reload_module__():
|
def __reload_module__():
|
||||||
|
Loading…
x
Reference in New Issue
Block a user