Fixed some bugs
This commit is contained in:
@@ -888,8 +888,7 @@ class Basic(commands.Cog):
|
||||
category = "News"
|
||||
view = HelpView(self.bot, ctx.author)
|
||||
embed = view.build_embed(category)
|
||||
message = await ctx.send(embed=embed, view=view)
|
||||
view.response = message
|
||||
view.response = await ctx.send(embed=embed, view=view)
|
||||
|
||||
@commands.hybrid_command(name="ping", aliases=get_aliases("ping"))
|
||||
@commands.dynamic_cooldown(cooldown_check, commands.BucketType.guild)
|
||||
|
||||
@@ -96,7 +96,7 @@ class Listeners(commands.Cog):
|
||||
"op": "updateGuild",
|
||||
"user": {
|
||||
"user_id": member.id,
|
||||
"avatar_url": member.avatar.url,
|
||||
"avatar_url": member.display_avatar.url,
|
||||
"name": member.name,
|
||||
},
|
||||
"channel_name": member.voice.channel.name if is_joined else "",
|
||||
|
||||
@@ -204,8 +204,7 @@ class Playlists(commands.Cog, name="playlist"):
|
||||
embed.set_footer(text=get_lang(ctx.guild.id, 'playlistFooter'))
|
||||
|
||||
view = PlaylistView(embed, results, ctx.author)
|
||||
messsage = await ctx.send(embed=embed, view=view, ephemeral=True)
|
||||
view.response = messsage
|
||||
view.response = await ctx.send(embed=embed, view=view, ephemeral=True)
|
||||
|
||||
@playlist.command(name="create", aliases=get_aliases("create"))
|
||||
@app_commands.describe(
|
||||
|
||||
@@ -2,7 +2,7 @@ import requests, zipfile, os, shutil, argparse
|
||||
from io import BytesIO
|
||||
|
||||
ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
__version__ = "v2.6.6b5"
|
||||
__version__ = "v2.6.7b6"
|
||||
|
||||
GITHUB_API_URL = "https://api.github.com/repos/ChocoMeow/Vocard/releases/latest"
|
||||
VOCARD_URL = "https://github.com/ChocoMeow/Vocard/archive/"
|
||||
|
||||
@@ -20,10 +20,13 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import discord
|
||||
|
||||
from voicelink import Track
|
||||
from typing import TYPE_CHECKING
|
||||
if TYPE_CHECKING:
|
||||
from voicelink import Track
|
||||
|
||||
class SearchDropdown(discord.ui.Select):
|
||||
def __init__(self, tracks: list[Track], get_msg: callable) -> None:
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import base64, io, abc, struct, dataclasses
|
||||
|
||||
from typing import Union, BinaryIO, Optional
|
||||
from typing import Union, BinaryIO, Optional, TYPE_CHECKING
|
||||
if TYPE_CHECKING:
|
||||
from .objects import Track
|
||||
|
||||
@dataclasses.dataclass(frozen=True)
|
||||
class Codec:
|
||||
@@ -180,14 +184,14 @@ class TrackDecoder:
|
||||
"identifier": body_reader.read_utf(),
|
||||
"is_stream": body_reader.read_bool(),
|
||||
"uri": body_reader.read_optional_utf(),
|
||||
"thumbnail": None if version not in [0, 3] else body_reader.read_optional_utf(),
|
||||
"artworkUrl": None if version not in [0, 3] else body_reader.read_optional_utf(),
|
||||
"isrc": None if version != 3 else body_reader.read_optional_utf(),
|
||||
"sourceName": body_reader.read_utf(),
|
||||
"position": body_reader.read_long()
|
||||
}
|
||||
|
||||
class TrackEncoder:
|
||||
def encode(self, stream: MessageOutput, track) -> None:
|
||||
def encode(self, stream: MessageOutput, track: Track) -> None:
|
||||
body_writer = stream.start()
|
||||
|
||||
body_writer.write_byte(0)
|
||||
|
||||
@@ -88,15 +88,11 @@ class Track:
|
||||
self._search_type: SearchType = SearchType.ytmsearch if self.spotify else search_type
|
||||
self.spotify_track: Track = spotify_track
|
||||
|
||||
self.thumbnail: str = None
|
||||
self.emoji: str = emoji_source(self.source)
|
||||
self.thumbnail: str = info.get("artworkUrl")
|
||||
if not self.thumbnail and YOUTUBE_REGEX.match(self.uri):
|
||||
self.thumbnail = f"https://img.youtube.com/vi/{self.identifier}/maxresdefault.jpg"
|
||||
|
||||
if artworkUrl := info.get("artworkUrl"):
|
||||
self.thumbnail = artworkUrl
|
||||
|
||||
elif YOUTUBE_REGEX.match(self.uri):
|
||||
self.thumbnail = f"https://img.youtube.com/vi/{self.identifier}/hqdefault.jpg"
|
||||
|
||||
self.emoji: str = emoji_source(self.source)
|
||||
self.length: float = 3000 if self.source == "soundcloud" and "/preview/" in self.identifier else info.get("length")
|
||||
|
||||
self.requester: Member = requester
|
||||
|
||||
@@ -401,20 +401,20 @@ class Node:
|
||||
return [
|
||||
Track(
|
||||
track_id=None,
|
||||
info=spotify_results.to_dict(),
|
||||
requester=requester,
|
||||
search_type=search_type,
|
||||
spotify_track=spotify_results,
|
||||
info=spotify_results.to_dict()
|
||||
)
|
||||
]
|
||||
|
||||
tracks = [
|
||||
Track(
|
||||
track_id=None,
|
||||
info=track.to_dict(),
|
||||
requester=requester,
|
||||
search_type=search_type,
|
||||
spotify_track=track,
|
||||
info=track.to_dict()
|
||||
) for track in spotify_results.tracks if track.uri
|
||||
]
|
||||
|
||||
@@ -467,7 +467,7 @@ class Node:
|
||||
raise TrackLoadError("There was an error while trying to load this track.")
|
||||
|
||||
elif load_type == "error":
|
||||
exception = data["exception"]
|
||||
exception = data["data"]
|
||||
raise TrackLoadError(f"{exception['message']} [{exception['severity']}]")
|
||||
|
||||
elif load_type == "empty":
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
from typing import List
|
||||
|
||||
class Track:
|
||||
"""The base class for a Spotify Track"""
|
||||
|
||||
@@ -16,7 +14,7 @@ class Track:
|
||||
def __init__(self, data: dict, image=None) -> None:
|
||||
self.name: str = data.get('name', 'Unknown')
|
||||
self.artists: str = ", ".join(artist["name"] for artist in data.get('artists'))
|
||||
self.artist_id: list = [artist['id'] for artist in data.get('artists')]
|
||||
self.artist_id: list[str] = [artist['id'] for artist in data.get('artists')]
|
||||
self.length: int = data.get('duration_ms')
|
||||
self.id: str = data.get('id')
|
||||
self.image: str = images[0]["url"] if (images := data.get("album", {}).get("images")) else image
|
||||
@@ -33,7 +31,7 @@ class Track:
|
||||
"isStream": False,
|
||||
"isSeekable": True,
|
||||
"position": 0,
|
||||
"thumbnail": self.image
|
||||
"artworkUrl": self.image
|
||||
}
|
||||
|
||||
def __repr__(self) -> str:
|
||||
@@ -59,7 +57,7 @@ class Album:
|
||||
self.name: str = data.get('name', 'Unknown')
|
||||
self.artists: str = ", ".join(artist["name"] for artist in data.get('artists'))
|
||||
self.image: str = data["images"][0]["url"]
|
||||
self.tracks: list = [Track(track, image=self.image) for track in data["tracks"]["items"]]
|
||||
self.tracks: list[Track] = [Track(track, image=self.image) for track in data["tracks"]["items"]]
|
||||
self.total_tracks: int = data["total_tracks"]
|
||||
self.id: str = data.get('id')
|
||||
self.uri: str = data["external_urls"]["spotify"]
|
||||
@@ -83,7 +81,7 @@ class Artist:
|
||||
"name"
|
||||
)
|
||||
def __init__(self, data: dict) -> None:
|
||||
self.tracks: List[Track] = [Track(track) for track in data['tracks']]
|
||||
self.tracks: list[Track] = [Track(track) for track in data['tracks']]
|
||||
if self.tracks:
|
||||
self.image: str = self.tracks[0].image
|
||||
self.total_tracks: int = len(self.tracks)
|
||||
@@ -111,9 +109,9 @@ class Playlist:
|
||||
"uri"
|
||||
)
|
||||
|
||||
def __init__(self, data: dict, tracks: List[Track]) -> None:
|
||||
def __init__(self, data: dict, tracks: list[Track]) -> None:
|
||||
self.name: str = data.get('name', 'Unknown')
|
||||
self.tracks: List[Track] = tracks
|
||||
self.tracks: list[Track] = tracks
|
||||
self.owner: str = data["owner"]["display_name"]
|
||||
self.total_tracks: int = data["tracks"]["total"]
|
||||
self.id: str = data.get('id')
|
||||
|
||||
@@ -130,6 +130,19 @@ const decoders = [
|
||||
const source = input.readUTF();
|
||||
|
||||
return { track_id, title, author, length, identifier, isStream, uri, thumbnail: null, source, position: 0n };
|
||||
},
|
||||
(input, track_id) => {
|
||||
const title = input.readUTF();
|
||||
const author = input.readUTF();
|
||||
const length = input.readLong();
|
||||
const identifier = input.readUTF();
|
||||
const isStream = input.readBoolean();
|
||||
const uri = input.readBoolean() ? input.readUTF() : null;
|
||||
const thumbnail = input.readBoolean() ? input.readUTF() : null;
|
||||
const isrc = input.readBoolean() ? input.readUTF() : null;
|
||||
const source = input.readUTF();
|
||||
|
||||
return { track_id, title, author, length, identifier, isStream, uri, thumbnail, source, position: 0n };
|
||||
}
|
||||
]
|
||||
function decode(track_id) {
|
||||
|
||||
Reference in New Issue
Block a user