Renaming modules, removing useless and changing logic of bot initialization

This commit is contained in:
Rafael Vargas 2022-01-06 18:25:17 -04:00
parent 9c327b8dbf
commit 74d91c15f8
22 changed files with 33 additions and 209 deletions

5
.gitignore vendored
View File

@ -1,5 +1,4 @@
__pycache__
examples
.env
errors
.cache
.cache
Admin.py

View File

@ -1,19 +1,15 @@
from dotenv import dotenv_values
from decouple import config
CETUS_API = dotenv_values('.env')['CETUS_API']
CAMBION_API = dotenv_values('.env')['CAMBION_API']
FISSURES_API = dotenv_values('.env')['FISSURES_API']
BOT_TOKEN = dotenv_values('.env')['BOT_TOKEN']
SPOTIFY_ID = dotenv_values('.env')['SPOTIFY_ID']
SPOTIFY_SECRET = dotenv_values('.env')['SPOTIFY_SECRET']
SECRET_MESSAGE = dotenv_values('.env')['SECRET_MESSAGE']
PHRASES_API = dotenv_values('.env')['PHRASES_API']
CETUS_API = config('CETUS_API')
CAMBION_API = config('CAMBION_API')
FISSURES_API = config('FISSURES_API')
BOT_TOKEN = config('BOT_TOKEN')
SPOTIFY_ID = config('SPOTIFY_ID')
SPOTIFY_SECRET = config('SPOTIFY_SECRET')
SECRET_MESSAGE = config('SECRET_MESSAGE')
PHRASES_API = config('PHRASES_API')
BOT_PREFIX = '!'
INITIAL_EXTENSIONS = {'vulkanbot.commands.Phrases', 'vulkanbot.commands.Warframe',
'vulkanbot.general.Filter', 'vulkanbot.general.Control', 'vulkanbot.music.Music',
'vulkanbot.commands.Random', 'vulkanbot.general.Admin'}
STARTUP_MESSAGE = 'Starting Vulkan...'
STARTUP_COMPLETE_MESSAGE = 'Vulkan is now operating.'
@ -27,12 +23,9 @@ MAX_API_CAMBION_TRIES = 10
MAX_API_FISSURES_TRIES = 10
MAX_PRELOAD_SONGS = 10
TRASH_CHANNEL_ID = 919961802140450837
SONGINFO_UPLOADER = "Uploader: "
SONGINFO_DURATION = "Duration: "
HELP_SKIP = 'Skip the current playing song'
HELP_RESUME = 'Resumes the song player'
HELP_CLEAR = 'Clear the queue'
@ -59,24 +52,9 @@ INVALID_INPUT = 'This type of input was too strange, try something better'
DOWNLOADING_ERROR = 'An error occurred while downloading'
SONG_ADDED = 'Song added to the Queue'
ABSOLUTE_PATH = ''
COOKIE_PATH = '/config/cookies/cookies.txt'
COLOURS = {
'red': 0xDC143C,
'green': 0x58D68D,
'grey': 0x708090,
'blue': 0x3498DB
}
MEMBERS_MAXIMUM_DROPS = {
'RafaelV': 1,
'Gassu': 2,
'LopesZ3R4': 4,
'BABIGIRL': 4,
'Hijãomi': 2,
'Jillian': 4,
'Maxymuns': 2
}

22
main.py
View File

@ -1,10 +1,9 @@
import os
import discord
import os
from config import config
from discord.ext import commands
intents = discord.Intents.default()
intents.members = True
@ -12,19 +11,12 @@ bot = commands.Bot(command_prefix=config.BOT_PREFIX, pm_help=True,
case_insensitive=True, intents=intents)
bot.remove_command('help')
if config.BOT_TOKEN == "":
exit()
if __name__ == '__main__':
config.ABSOLUTE_PATH = os.path.dirname(os.path.abspath(__file__))
config.COOKIE_PATH = config.ABSOLUTE_PATH + config.COOKIE_PATH
for filename in os.listdir('./vulkan/commands'):
if filename.endswith('.py'):
bot.load_extension(f'vulkan.commands.{filename[:-3]}')
if config.BOT_TOKEN == "":
print("Error: No bot token!")
exit()
for extension in config.INITIAL_EXTENSIONS:
try:
bot.load_extension(extension)
except Exception as e:
print(e)
bot.run(config.BOT_TOKEN, bot=True, reconnect=True)
bot.run(config.BOT_TOKEN, bot=True, reconnect=True)

View File

@ -2,8 +2,8 @@ import discord
from discord.ext import commands
from config import config
from vulkanbot.music.Player import Player
from vulkanbot.music.utils import *
from vulkan.music.Player import Player
from vulkan.music.utils import *
class Music(commands.Cog):

View File

@ -5,8 +5,8 @@ from config import config
from yt_dlp import YoutubeDL
from yt_dlp.utils import ExtractorError, DownloadError
from vulkanbot.music.Song import Song
from vulkanbot.music.utils import is_url
from vulkan.music.Song import Song
from vulkan.music.utils import is_url
class Downloader():

View File

@ -3,11 +3,11 @@ from discord.ext import commands
from config import config
import datetime
from vulkanbot.music.Downloader import Downloader
from vulkanbot.music.Playlist import Playlist
from vulkanbot.music.Searcher import Searcher
from vulkanbot.music.Types import Provider
from vulkanbot.music.utils import *
from vulkan.music.Downloader import Downloader
from vulkan.music.Playlist import Playlist
from vulkan.music.Searcher import Searcher
from vulkan.music.Types import Provider
from vulkan.music.utils import *
class Player(commands.Cog):

View File

@ -2,8 +2,8 @@ from collections import deque
from config import config
import random
from vulkanbot.music.Interfaces import IPlaylist
from vulkanbot.music.Song import Song
from vulkan.music.Interfaces import IPlaylist
from vulkan.music.Song import Song
class Playlist(IPlaylist):

View File

@ -1,6 +1,6 @@
from vulkanbot.music.Types import Provider
from vulkanbot.music.Spotify import SpotifySearch
from vulkanbot.music.utils import is_url
from vulkan.music.Types import Provider
from vulkan.music.Spotify import SpotifySearch
from vulkan.music.utils import is_url
class Searcher():

View File

@ -1,4 +1,4 @@
from vulkanbot.music.Interfaces import ISong, IPlaylist
from vulkan.music.Interfaces import ISong, IPlaylist
class Song(ISong):

View File

@ -1,73 +0,0 @@
import sys
import datetime
import traceback
MAXIMUM_TRIES = 10
class ErrorHandler():
"""Receive errors to write into a log file
Arg:
folder_path = Relative path from root to where the logs should be create
"""
def __init__(self, folder_path='') -> None:
self.__folder_path = folder_path
def write(self, error) -> bool:
"""Write the error to a log file"""
if not isinstance(error, Exception):
return False
full_path = self.__open_file()
if isinstance(full_path, bool):
return False
error_str = self.__prepare_error(error)
try:
with open(file=full_path, mode='w+') as log_file:
log_file.write(error_str)
return True
except Exception as e:
print(e)
return False
def __prepare_error(self, error: Exception) -> str:
"""Receive the error and return a good str"""
time_now = datetime.datetime.now()
tipo = sys.exc_info()[0]
msg = sys.exc_info()[1]
tb = traceback.format_tb(sys.exc_info()[2])
error_str = f'Error Time: {time_now}\nTipo: {tipo}\nMsg: {msg}\nTraceback: {tb}'
return error_str
def __open_file(self) -> str:
"""Open a file to write the error"""
successfull = False
tries = 0
while True:
now = datetime.datetime.now()
date_now = now.strftime(r'%d.%b.%Y-%Hh%Mm%Ss')
full_path = f'{self.__folder_path}/{date_now}({tries}).txt'
try:
log_file = open(file=full_path, mode='w+')
log_file.close()
except Exception as e:
print(e)
tries += 1
if tries > MAXIMUM_TRIES:
successfull = False
break
else:
successfull = True
break
if successfull:
return full_path
else:
return False

View File

@ -1,51 +0,0 @@
from discord.ext import commands
from discord import Member, Client
from config import config
class Admin(commands.Cog):
"""Deal with administration of users in server"""
def __init__(self, bot: Client):
self.__bot = bot
@commands.command(name='drop', help='Manda um membro para a Terapia')
async def drop(self, ctx, name):
user: Member = None
guild = ctx.guild
for member in guild.members:
if member.name == name:
user = member
break
if user == None:
await ctx.send(f'{name} não foi encontrado, utilize o nome de usuário ao invés do apelido do servidor')
return
permanent_drops = False
maximum_drops = None
try:
maximum_drops = config.MEMBERS_MAXIMUM_DROPS[user.name]
except KeyError:
permanent_drops = True
except Exception as e:
await ctx.send('Houve algum erro :/')
return
if maximum_drops == 0:
await ctx.send(f'{user.name} já foi dropado várias vezes, larga o cara bicho')
return
if user.voice == None:
await ctx.send(f'{user.name} precisa estar conectado a um canal de voz antes')
else:
await user.move_to(None) # Remove from voice
if not permanent_drops:
# Att the life of user
config.MEMBERS_MAXIMUM_DROPS[user.name] -= 1
def setup(bot):
bot.add_cog(Admin(bot))

View File

@ -1,21 +0,0 @@
from discord import Client
from discord.ext import commands
class Filter(commands.Cog):
"""Deal with filtering of discord messages"""
def __init__(self, bot: Client):
self.__bot = bot
@commands.Cog.listener()
async def on_message(self, message):
if message.author == self.__bot.user:
return
if 'elx' in message.content:
await message.channel.send(f'Coé {message.author.name}, tu é gay memo hein bicho')
def setup(bot):
bot.add_cog(Filter(bot))