| from __future__ import annotations | |
| import asyncio | |
| import pickle | |
| import hashlib | |
| import pathlib | |
| from typing import Dict, List | |
| import discord | |
| lock = asyncio.Lock() | |
| async def update_pickle_file(data: Dict | List, file_path: str): | |
| async with lock: | |
| with open(file_path, "wb") as fp: | |
| pickle.dump(data, fp) | |
| def read_pickle_file(file_path: str): | |
| with open(file_path, "rb") as fp: | |
| return pickle.load(fp) | |
| async def send_file_or_text(channel, file_or_text: str): | |
| # if the file exists, send as a file | |
| if pathlib.Path(str(file_or_text)).exists(): | |
| with open(file_or_text, "rb") as f: | |
| return await channel.send(file=discord.File(f)) | |
| else: | |
| return await channel.send(file_or_text) | |
| def remove_tags(content: str) -> str: | |
| content = content.replace("<@1040198143695933501>", "") | |
| content = content.replace("<@1057338428938788884>", "") | |
| return content.strip() | |
| def hash_user_id(user_id: int) -> str: | |
| return hashlib.sha256(str(user_id).encode("utf-8")).hexdigest() | |