Fix some bugs

This commit is contained in:
Choco
2023-02-15 13:55:32 +08:00
parent 84ca850f1e
commit 175589be24
7 changed files with 33 additions and 41 deletions

View File

@@ -8,10 +8,6 @@ from random import choice
from time import strptime
from pymongo import MongoClient
if not os.path.exists("./.env"):
print("Error .env file not set!")
exit()
if not os.path.exists("./settings.json"):
print("Error: Settings file not set!")
exit()
@@ -19,15 +15,20 @@ if not os.path.exists("./settings.json"):
#-------------- API Clients --------------
load_dotenv() #Load .env settings
MONGODB_NAME = os.getenv('MONGODB_NAME')
MONGODB_URL = os.getenv('MONGODB_URL')
if not (MONGODB_NAME and MONGODB_URL):
print("MONGODB_NAME and MONGODB_URL can't not be empty in .env")
exit()
youtube_api_key = os.getenv('YOUTUBE_API_KEY')
mongodb = MongoClient(os.getenv('MONGODB_URL'))
mongodb = MongoClient(MONGODB_URL)
collection = mongodb[MONGODB_NAME]['Settings']
Playlist = mongodb[MONGODB_NAME]['Playlist']
#--------------- Cache Var ---------------
invite_link = "https://discord.gg/wRCgB7vBQv" #Template of invite link
embed_color = None
report_channel_id = int(os.getenv("BUG_REPORT_CHANNEL_ID"))
report_channel_id = int(channel_id) if (channel_id := os.getenv("BUG_REPORT_CHANNEL_ID")) else 0
emoji_source_raw = {} #Stores all source emoji for track
error_log = {} #Stores error that not a Voicelink Exception
bot_access_user = [] #Stores bot access user id
@@ -161,6 +162,9 @@ async def similar_track(player):
if randomTrack.source != 'youtube':
return False
if not youtube_api_key:
return False
request_url = "https://youtube.googleapis.com/youtube/v3/search?part={part}&relatedToVideoId={videoId}&type={type}&videoCategoryId={videoCategoryId}&key={key}".format(
part="snippet",
videoId=randomTrack.identifier,

View File

@@ -8,7 +8,7 @@
}
},
"bot_access_user": [],
"color_code":"",
"color_code":"0xb3b3b3",
"emoji_source_raw": {
"youtube": "<:youtube:826661982760992778>",
"youtube music": "<:youtube:826661982760992778>",

View File

@@ -22,8 +22,7 @@ SOFTWARE.
"""
import discord
from function import embed_color
import function
class Select_message(discord.ui.Select):
def __init__(self, inbox):
@@ -52,7 +51,7 @@ class InboxView(discord.ui.View):
def build_embed(self):
embed=discord.Embed(title=f"📭 All {self.author}'s Inbox",
description=f'Max Messages: {len(self.inbox)}/10' + '```%0s %2s %20s\n' % (" ", "ID:", "Title:") + '\n'.join('%0s %2s. %35s'% ('✉️' if mail['type'] == 'invite' else '📢', index, mail['title'][:35] + "...") for index, mail in enumerate(self.inbox, start=1)) + '```',
color=embed_color)
color=function.embed_color)
if self.current:
embed.add_field(name="Message Info:", value=f"```{self.current['description']}\nSender ID: {self.current['sender']}\nPlaylist ID: {self.current['referId']}\nInvite Time: {self.current['time'].strftime('%d-%m %H:%M:%S')}```")
return embed

View File

@@ -24,10 +24,7 @@ SOFTWARE.
import discord
from math import ceil
from function import (
embed_color,
time as ctime
)
import function
class ListView(discord.ui.View):
def __init__(self, player, author, isQueue = True):
@@ -43,7 +40,7 @@ class ListView(discord.ui.View):
self.page = ceil(len(self.tracks) / 7)
self.current_page = 1
try:
self.time = ctime(sum([track.length for track in self.tracks]))
self.time = function.time(sum([track.length for track in self.tracks]))
except:
self.time = ""
@@ -67,11 +64,11 @@ class ListView(discord.ui.View):
offset = self.current_page * 7
tracks = self.tracks[(offset-7):offset]
embed = discord.Embed(title=self.player.get_msg('viewTitle'), color=embed_color)
embed = discord.Embed(title=self.player.get_msg('viewTitle'), color=function.embed_color)
embed.description=self.player.get_msg('viewDesc').format(self.player.current.uri, f"```{self.player.current.title}```") if self.player.current else self.player.get_msg('nowplayingDesc').format("None")
queueText = ""
for index, track in enumerate(tracks, start=offset - 6):
queueText += f"{track.emoji} `{index}.` `[" + (self.player.get_msg("live") if track.is_stream else ctime(track.length)) + f'`] **{track.title[:30]}** ' + (track.requester.mention if track.requester else "<@605618911471468554>") + "\n"
queueText += f"{track.emoji} `{index}.` `[" + (self.player.get_msg("live") if track.is_stream else function.time(track.length)) + f'`] **{track.title[:30]}** ' + (track.requester.mention if track.requester else self.player.client.id) + "\n"
embed.add_field(name=self.name, value=queueText)
embed.set_footer(text=self.player.get_msg('viewFooter').format(self.current_page, self.page, self.time))

View File

@@ -22,8 +22,7 @@ SOFTWARE.
"""
import discord
from function import embed_color
import function
class LyricsDropdown(discord.ui.Select):
def __init__(self, langs: list):
@@ -73,7 +72,7 @@ class LyricsView(discord.ui.View):
def build_embed(self):
chunk = self.source.get(self.lang)[self.current_page - 1]
embed=discord.Embed(description=chunk, color=embed_color)
embed=discord.Embed(description=chunk, color=function.embed_color)
embed.set_author(name=f"Searching Query: {self.name}", icon_url=self.author.display_avatar.url)
embed.set_footer(text=f"Page: {self.current_page}/{self.pages}")
return embed

View File

@@ -22,18 +22,11 @@ SOFTWARE.
"""
import discord
import function
from math import ceil
from tldextract import extract
from function import (
embed_color,
invite_link,
emoji_source,
time as ctime,
get_lang
)
class Select_playlist(discord.ui.Select):
def __init__(self, results):
options = [discord.SelectOption(emoji='🌎', label='All Playlist')]
@@ -95,27 +88,27 @@ class PlaylistView(discord.ui.View):
offset = self.current_page * 7
tracks = self.current['tracks'][(offset-7):offset]
embed = discord.Embed(title=get_lang(self.guildID, 'playlistView'), color=embed_color)
embed = discord.Embed(title=function.get_lang(self.guildID, 'playlistView'), color=function.embed_color)
embed.description= get_lang(self.guildID, 'playlistViewDesc').format(self.current['name'], self.current['id'], len(self.current['tracks']), self.current.get('owner', "None"), self.current['type'])
embed.description= function.get_lang(self.guildID, 'playlistViewDesc').format(self.current['name'], self.current['id'], len(self.current['tracks']), self.current.get('owner', "None"), self.current['type'])
perms = self.current['perms']
permsStr = get_lang(self.guildID, 'settingsPermTitle')
permsStr = function.get_lang(self.guildID, 'settingsPermTitle')
if self.current['type'] == 'share':
embed.add_field(name=permsStr, value=get_lang(self.guildID, 'playlistViewPermsValue').format('' if 'write' in perms and self.author.id in perms['write'] else '', '' if 'remove' in perms and self.author.id in perms['remove'] else ''))
embed.add_field(name=permsStr, value=function.get_lang(self.guildID, 'playlistViewPermsValue').format('' if 'write' in perms and self.author.id in perms['write'] else '', '' if 'remove' in perms and self.author.id in perms['remove'] else ''))
else:
embed.add_field(name=permsStr, value=get_lang(self.guildID, 'playlistViewPermsValue2').format(', '.join(f'<@{user}>' for user in perms['read'])))
embed.add_field(name=permsStr, value=function.get_lang(self.guildID, 'playlistViewPermsValue2').format(', '.join(f'<@{user}>' for user in perms['read'])))
trackStr = get_lang(self.guildID, 'playlistViewTrack')
trackStr = function.get_lang(self.guildID, 'playlistViewTrack')
if tracks:
try:
embed.add_field(name=trackStr, value='\n'.join(f"{emoji_source(extract(track['info']['uri']).domain)} `{index}.` `[{ctime(track['info']['length'] * 1000)}]` **{track['info']['title'][:30]}** " for index, track in enumerate(tracks, start=offset - 6)), inline=False)
embed.add_field(name=trackStr, value='\n'.join(f"{function.emoji_source(extract(track['info']['uri']).domain)} `{index}.` `[{function.time(track['info']['length'] * 1000)}]` **{track['info']['title'][:30]}** " for index, track in enumerate(tracks, start=offset - 6)), inline=False)
except:
embed.add_field(name=trackStr, value='\n'.join(f"{emoji_source(extract(track.info['uri']).domain)} `{index}.` `[{ctime(track.length)}]` **{track.title[:30]}** " for index, track in enumerate(tracks, start=offset - 6)), inline=False)
embed.add_field(name=trackStr, value='\n'.join(f"{function.emoji_source(extract(track.info['uri']).domain)} `{index}.` `[{function.time(track.length)}]` **{track.title[:30]}** " for index, track in enumerate(tracks, start=offset - 6)), inline=False)
else:
embed.add_field(name=trackStr, value=get_lang(self.guildID, 'playlistNoTrack').format(self.current['name']), inline=False)
embed.add_field(name=trackStr, value=function.get_lang(self.guildID, 'playlistNoTrack').format(self.current['name']), inline=False)
embed.set_footer(text=get_lang(self.guildID, 'playlistViewPage').format(self.current_page, self.page, self.current['time']))
embed.set_footer(text=function.get_lang(self.guildID, 'playlistViewPage').format(self.current_page, self.page, self.current['time']))
return embed
@@ -170,7 +163,7 @@ class CreateView(discord.ui.View):
self.value = None
self.response = None
self.add_item(agree())
self.add_item(discord.ui.Button(label='Support', emoji=':support:915152950471581696', url=invite_link))
self.add_item(discord.ui.Button(label='Support', emoji=':support:915152950471581696', url=function.invite_link))
async def on_timeout(self):
for child in self.children:

View File

@@ -36,7 +36,7 @@ from .artist import Artist
GRANT_URL = "https://accounts.spotify.com/api/token"
REQUEST_URL = "https://api.spotify.com/v1/{type}s/{id}"
SEARCH_URL = "https://api.spotify.com/v1/search?q={query}&type={type}&limit={limit}"
SUGGESTION_URL = "https://api.spotify.com/v1/recommendations?limit={limit}&seed_tracks={seed_tracks}"
SUGGESTION_URL = "https://api.spotify.com/v1/recommendations?limit={limit}&seed_artists={seed_artists}&seed_tracks={seed_tracks}"
SPOTIFY_URL_REGEX = re.compile(
r"https?://open.spotify.com/(?P<type>album|playlist|track|artist)/(?P<id>[a-zA-Z0-9]+)"
)
@@ -95,7 +95,7 @@ class Client:
if not self._bearer_token or time.time() >= self._expiry:
await self._fetch_bearer_token()
request_url = SUGGESTION_URL.format(limit=limit, seed_tracks=seed_tracks)
request_url = SUGGESTION_URL.format(limit=limit, seed_artists=seed_artists, seed_tracks=seed_tracks)
async with self.session.get(request_url, headers=self._bearer_headers) as resp:
if resp.status != 200: