Praxis_Bot/discord_script.py
2020-10-20 04:18:45 -04:00

90 lines
2.6 KiB
Python

import random
import re
from discord import message
from discord.client import Client
import config as config
import db
import tts
import commands.loader as command_loader
from commands.command_base import AbstractCommand
import credentials
import discord
import discord.message
import discord.channel
class Discord_Module(discord.Client):
def __init__(self):
super().__init__()
self.dbCredential: credentials.DB_Credential
self.discordCredential: credentials.Discord_Credential
self.commands = command_loader.load_commands()
self.tts_enabled: bool = False
def main(self):
self.run(self.discordCredential.token)
async def on_ready(self):
print('Logged on as', self.user)
async def on_message(self, message: discord.Message):
print("{" + message.guild.name + "}[ " + str(message.channel) + " ](" + message.author.display_name + ")> ")
print(message.content)
#Message ID
#print(str(message.id))
#Channel ID
#print(str(message.channel.id))
if message.content == "//test":
await message.channel.send('test response')
await self.eval_commands(message)
def do_command(self):
pass
async def eval_commands(self, message: discord.Message):
# containsURL: bool = self.contains_url(message)
try:
#first_space_idx = message.text.index(' ')
# This fixes a error where if you send a command without arguments it fails because
# it cant find the substring.
if message.content.find(" ") != -1:
first_space_idx = message.content.index(' ')
else:
first_space_idx = -1
command_text = ' '
if first_space_idx > -1:
command_text = message.content[0:first_space_idx]
else:
command_text = message.content
command = self.commands[command_text]
if command is not None and command.command_type is AbstractCommand.CommandType.DISCORD:
await command.do_command(self, message)
except Exception as e:
print(e)
pass # we don't care
if __name__ == "__main__":
testModule = Discord_Module()
credentials_manager = credentials.Credentials_Module()
credentials_manager.load_credentials()
testModule.dbCredential = credentials_manager.find_DB_Credential("praxis_bot")
testModule.discordCredential = credentials_manager.find_Discord_Credential("praxis_bot")
testModule.main()
testModule.main()