Fix some bugs
This commit is contained in:
16
function.py
16
function.py
@@ -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,
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
}
|
||||
},
|
||||
"bot_access_user": [],
|
||||
"color_code":"",
|
||||
"color_code":"0xb3b3b3",
|
||||
"emoji_source_raw": {
|
||||
"youtube": "<:youtube:826661982760992778>",
|
||||
"youtube music": "<:youtube:826661982760992778>",
|
||||
|
||||
@@ -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
|
||||
|
||||
11
view/list.py
11
view/list.py
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user