General Clean Code

This commit is contained in:
Choco
2023-04-05 22:48:12 +08:00
parent d98c8fdb77
commit 9570c0e9d3
9 changed files with 44 additions and 41 deletions

View File

@@ -1,2 +1,2 @@
from .lyrics import getLyrics
from .settings import Settings
from .lyrics import lyricsPlatform

View File

@@ -1,3 +1,6 @@
import os
from dotenv import load_dotenv
class Settings:
def __init__(self, settings: dict) -> None:
self.invite_link = "https://discord.gg/wRCgB7vBQv"
@@ -15,4 +18,20 @@ class Settings:
"port": 8000,
"enable": False
}
)
)
class TOKENS:
def __init__(self) -> None:
load_dotenv()
self.token = os.getenv("TOKEN")
self.client_id = os.getenv("CLIENT_ID")
self.client_secret_id = os.getenv("CLIENT_SECRET_ID")
self.sercet_key = os.getenv("SERCET_KEY")
self.bug_report_channel_id = int(os.getenv("BUG_REPORT_CHANNEL_ID"))
self.spotify_client_id = os.getenv("SPOTIFY_CLIENT_ID")
self.spotify_client_secret = os.getenv("SPOTIFY_CLIENT_SECRET")
self.youtube_api_key = os.getenv("YOUTUBE_API_KEY")
self.genius_token = os.getenv("GENIUS_TOKEN")
self.mongodb_url = os.getenv("MONGODB_URL")
self.mongodb_name = os.getenv("MONGODB_NAME")

View File

@@ -8,9 +8,9 @@ from function import (
time as ctime,
formatTime,
emoji_source,
youtube_api_key,
requests_api,
get_lang,
tokens,
settings,
cooldown_check,
get_aliases,
@@ -716,7 +716,7 @@ class Basic(commands.Cog):
if track.source != 'youtube':
return await ctx.send(player.get_msg('chatpersNotSupport'), ephemeral=True)
request_uri = "https://youtube.googleapis.com/youtube/v3/videos?part=snippet&id={videoId}&key={key}".format(videoId=track.identifier, key=youtube_api_key)
request_uri = "https://youtube.googleapis.com/youtube/v3/videos?part=snippet&id={videoId}&key={key}".format(videoId=track.identifier, key=tokens.youtube_api_key)
data = await requests_api(request_uri)
if not data:

View File

@@ -1,10 +1,8 @@
import voicelink
import asyncio
import discord
import json
import function as func
from os import getenv
from discord.ext import commands
class Nodes(commands.Cog):
@@ -22,8 +20,8 @@ class Nodes(commands.Cog):
for n in func.settings.nodes.values():
try:
await self.voicelink.create_node(bot=self.bot,
spotify_client_id=getenv('SPOTIFY_CLIENT_ID'),
spotify_client_secret=getenv('SPOTIFY_CLIENT_SECRET'),
spotify_client_id=func.tokens.spotify_client_id,
spotify_client_secret=func.tokens.spotify_client_secret,
**n)
except:
print(f'Node {n["identifier"]} is not able to connect!')

View File

@@ -22,20 +22,17 @@ from function import (
from datetime import datetime
from views import PlaylistView, InboxView, HelpView
def assign_playlistId(existed: list) -> str:
for i in range(200, 210):
if str(i) not in existed:
return str(i)
async def check_playlist_perms(userid: int, authorid: int, dId: str) -> dict:
playlist = await get_playlist(authorid, 'playlist', dId)
if not playlist or userid not in playlist['perms']['read']:
return {}
return playlist
async def check_playlist(ctx: commands.Context, name: str = None, full: bool = False, share: bool = True) -> dict:
user = await get_playlist(ctx.author.id, 'playlist')
if not user:
@@ -56,7 +53,6 @@ async def check_playlist(ctx: commands.Context, name: str = None, full: bool = F
return {'playlist': playlist, 'position': index, 'id': data}
return {'playlist': None, 'position': None, 'id': None}
async def search_playlist(url: str, requester: discord.Member, timeNeed=True):
try:
tracks = await voicelink.NodePool.get_node().get_tracks(url, requester=requester)

View File

@@ -5,14 +5,13 @@ import os
from importlib import import_module
from discord.ext import commands
from dotenv import load_dotenv
from random import choice
from datetime import datetime
from time import strptime
from io import BytesIO
from pymongo import MongoClient
from typing import Optional, Union
from addons import Settings
from addons import Settings, TOKENS
root_dir = os.path.dirname(os.path.abspath(__file__))
@@ -20,29 +19,22 @@ if not os.path.exists(os.path.join(root_dir, "settings.json")):
raise Exception("Settings file not set!")
#-------------- 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):
tokens: TOKENS = TOKENS();
if not (tokens.mongodb_name and tokens.mongodb_url):
raise Exception("MONGODB_NAME and MONGODB_URL can't not be empty in .env")
try:
mongodb = MongoClient(host=MONGODB_URL, serverSelectionTimeoutMS=5000)
mongodb = MongoClient(host=tokens.mongodb_url, serverSelectionTimeoutMS=5000)
mongodb.server_info()
print("Successfully connected to MongoDB!")
except Exception as e:
raise Exception("Not able to connect MongoDB! Reason:", e)
collection = mongodb[MONGODB_NAME]['Settings']
Playlist = mongodb[MONGODB_NAME]['Playlist']
youtube_api_key = os.getenv('YOUTUBE_API_KEY')
collection = mongodb[tokens.mongodb_name]['Settings']
Playlist = mongodb[tokens.mongodb_name]['Playlist']
#--------------- Cache Var ---------------
try:
report_channel_id = int(os.getenv("BUG_REPORT_CHANNEL_ID"))
except:
report_channel_id = 0
settings: Settings
error_log = {} #Stores error that not a Voicelink Exception
langs = {} #Stores all the languages in ./langs
@@ -50,7 +42,6 @@ guild_settings = {} #Cache guild language
local_langs = {} #Stores all the localization languages in ./local_langs
playlist_name = {} #Cache the user's playlist name
#-------------- Vocard Functions --------------
def get_settings(guild_id:int):
settings = guild_settings.get(guild_id, None)
@@ -178,7 +169,7 @@ async def similar_track(player) -> bool:
if randomTrack.source != 'youtube':
return False
if not youtube_api_key:
if not tokens.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(
@@ -186,7 +177,7 @@ async def similar_track(player) -> bool:
videoId=randomTrack.identifier,
type="video",
videoCategoryId="10",
key=youtube_api_key
key=tokens.youtube_api_key
)
try:

View File

@@ -8,11 +8,9 @@ import function as func
from discord.ext import commands
from web import IPCServer
from dotenv import load_dotenv
from datetime import datetime
from voicelink import VoicelinkException
load_dotenv()
func.init()
class Translator(discord.app_commands.Translator):
@@ -35,7 +33,7 @@ class Vocard(commands.Bot):
self,
host=func.settings.ipc_server["host"],
port=func.settings.ipc_server["port"],
sercet_key=os.getenv("SERCET_KEY")
sercet_key=func.tokens.sercet_key
)
async def on_message(self, message: discord.Message, /) -> None:
@@ -72,6 +70,8 @@ class Vocard(commands.Bot):
print(f"Python Version: {sys.version}")
print("------------------")
func.tokens.client_id = self.user.id
async def on_command_error(self, ctx: commands.Context, exception, /) -> None:
error = getattr(exception, 'original', exception)
if ctx.interaction:
@@ -130,4 +130,4 @@ bot = Vocard(command_prefix=get_prefix,
if __name__ == "__main__":
update.checkVersion(withMsg=True)
bot.run(os.getenv("TOKEN"), log_handler=None)
bot.run(func.tokens.token, log_handler=None)

View File

@@ -24,7 +24,6 @@ SOFTWARE.
import discord
from discord.ext import commands
from os import getenv
import function as func
class HelpDropdown(discord.ui.Select):
@@ -59,7 +58,7 @@ class HelpView(discord.ui.View):
self.categorys = [ name.capitalize() for name, cog in bot.cogs.items() if len([c for c in cog.walk_commands()]) ]
self.add_item(discord.ui.Button(label='Support', emoji=':support:915152950471581696', url=func.settings.invite_link))
self.add_item(discord.ui.Button(label='Invite', emoji=':invite:915152589056790589', url='https://discord.com/oauth2/authorize?client_id={}&permissions=2184260928&scope=bot%20applications.commands'.format(getenv('CLIENT_ID'))))
self.add_item(discord.ui.Button(label='Invite', emoji=':invite:915152589056790589', url='https://discord.com/oauth2/authorize?client_id={}&permissions=2184260928&scope=bot%20applications.commands'.format(func.tokens.client_id)))
self.add_item(discord.ui.Button(label='Github', url='https://github.com/ChocoMeow/Vocard'))
self.add_item(discord.ui.Button(label='Donate', emoji=':patreon:913397909024800878', url='https://www.patreon.com/Vocard'))
self.add_item(HelpDropdown(self.categorys))

View File

@@ -24,14 +24,14 @@ SOFTWARE.
from __future__ import annotations
import asyncio
import json
import os
import re
import aiohttp
from discord import Client, Member
from typing import Dict, Optional, TYPE_CHECKING, Union
from urllib.parse import quote
import aiohttp
from discord import Client, Member
import function as func
from . import (
@@ -122,7 +122,7 @@ class Node:
self._headers = {
"Authorization": self._password,
"User-Id": str(os.getenv('CLIENT_ID')),
"User-Id": str(func.tokens.client_id),
"Client-Name": f"Voicelink/{__version__}",
'Resume-Key': self.resume_key
}