Separate files

This commit is contained in:
klemek
2020-08-30 15:21:15 +02:00
parent 147182a900
commit 947cfd1ce9
4 changed files with 41 additions and 37 deletions
+1
View File
@@ -1 +1,2 @@
from .bot import Bot
from .discord_utils import delete_message, message_id
+2 -37
View File
@@ -1,4 +1,4 @@
from typing import List, Callable, Coroutine, Tuple, Any
from typing import Callable, Coroutine, Tuple, Any
import time
import logging
import traceback
@@ -10,6 +10,7 @@ import os
from datetime import datetime
from dotenv import load_dotenv
from .utils import sanitize_input, parse_arguments
CommandFunction = Callable[[discord.Client, discord.Message, Tuple[str]], Coroutine[Any, Any, None]]
@@ -18,42 +19,6 @@ def debug(message: discord.Message, txt: str):
logging.info(f"{message.guild} > #{message.channel}: {txt}")
async def delete_message(message: discord.Message) -> bool:
try:
await message.delete()
return True
except discord.Forbidden:
pass
except discord.NotFound:
pass
return False
def message_id(message: discord.Message) -> str:
is_direct = message.channel.type == discord.ChannelType.private
if not is_direct:
return f'{message.guild.id}/{message.channel.id}/{message.author.id}'
else:
return message.author.id
def sanitize_input(src: str) -> str:
return re.sub(r'[^A-Za-z0-9 _]', "", src.lower().strip())
args_regex = re.compile('"([^"]*)"|\'([^\']*)\'|([^ ]+)')
def parse_arguments(src: str) -> List[str]:
def get_found_match(m: list) -> str:
f = [g for g in m if len(g) > 0]
if len(f) > 0:
return f[0]
return ""
return [get_found_match(m) for m in args_regex.findall(src)]
class Command(object):
def __init__(self, regex: str, compute: CommandFunction, help_short: str, help_long: str):
self.regex = regex
+20
View File
@@ -0,0 +1,20 @@
import discord
async def delete_message(message: discord.Message) -> bool:
try:
await message.delete()
return True
except discord.Forbidden:
pass
except discord.NotFound:
pass
return False
def message_id(message: discord.Message) -> str:
is_direct = message.channel.type == discord.ChannelType.private
if not is_direct:
return f'{message.guild.id}/{message.channel.id}/{message.author.id}'
else:
return message.author.id
+18
View File
@@ -0,0 +1,18 @@
from typing import List
import re
args_regex = re.compile('"([^"]*)"|\'([^\']*)\'|([^ ]+)')
def sanitize_input(src: str) -> str:
return re.sub(r'[^A-Za-z0-9 _]', "", src.lower().strip())
def parse_arguments(src: str) -> List[str]:
def get_found_match(m: list) -> str:
f = [g for g in m if len(g) > 0]
if len(f) > 0:
return f[0]
return ""
return [get_found_match(m) for m in args_regex.findall(src)]