# This Python file uses the following encoding: utf-8 # trunk-ignore-all(bandit/B311) # pylint: disable=line-too-long # pylint: disable=too-many-lines """ Module of a python bot named Conjurer - used to work on BDSM discord servers. """ import logging # *=========================================== Standard Library Imports import random import threading from logging import handlers # *==============Imported libraries import discord from discord.ext import commands from communication_subroutine import comm_subroutine from constants import ENCODING, LOGFILE, TOKEN # *=========================================== Initializations intents = discord.Intents.default() intents.message_content = True intents.typing = True intents.presences = True intents.members = True intents.messages = True intents.voice_states = True logger = logging.getLogger("discord") logger.setLevel(logging.DEBUG) handler = handlers.RotatingFileHandler( filename=LOGFILE, encoding=ENCODING, mode="a", maxBytes=6 * 1024 * 1024, backupCount=6, ) formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") handler.setFormatter(formatter) logger.addHandler(handler) random.seed() client = commands.Bot(intents=intents, command_prefix="$") # *=========================================== Define Events @client.event async def on_ready(): """Metoda wywoływana przy połączeniu do serwera.""" logger.debug("%s has connected to Discord!", client.user) # TODO: load vs reload await client.load_extension("administration_commands") await client.load_extension("librarian_commands") await client.load_extension("music_commands") await client.load_extension("radio_commands") await client.load_extension("ai_commands") await client.load_extension("other_commands") await client.load_extension("voice_recognition_commands") logger.info(client.cogs) radio_is_alive = True if radio_is_alive: radio_hardkor = discord.Activity( name = "Radio Hammer/Radio Conjurer/Wolne Bałuity Kurwa", url = "http://95.175.16.246:666/mp3-stream", type = discord.ActivityType.streaming, platform = "Liquidsoap+RaspberyPi+RolandSeratoDJ202", state = "Where the f*** is the DJ booth?", details= "This Is Radio Hardkor based in Wolne Księstwo Bałuty, the best pirate radiostation on both sides of Łódka river", buttons= [{"label":"RADIO", "url":"http://95.175.16.246:666/mp3-stream"}], assets= {"large_image": "fuckery.jpg", "large_text":"Fuckewry", "small_image":"willowisp.png", "small_text":"Hi!"} ) await client.change_presence(activity=radio_hardkor) else: await client.change_presence(activity=discord.Game(name="Axe Throwing Darts")) await client.tree.sync() for com in client.commands: logger.info("Command %s is awejleble", com.qualified_name) logger.info("Logged in as ---->", client.user) logger.info("ID:", client.user.id) # TODO: ADMINISTRATION # *================================== Run if __name__ == "__main__": logger.info("Starting discord bot") threads = [] logger.info("Starting discord bot: Creating threads") threads.append(threading.Thread(target=client.run, args=(TOKEN,))) threads.append(threading.Thread(target=comm_subroutine)) logger.info("Starting discord bot: Starting threads") WRK_CNT = 0 for worker in threads: WRK_CNT += 1 logger.info("Starting discord bot: Starting thread %s", WRK_CNT) worker.start() logger.info("Starting discord bot: Joining threads") WRK_CNT = 0 for worker in threads: WRK_CNT += 1 logger.info("Starting discord bot: Joining thread %s", WRK_CNT) worker.join()