mirror of
https://github.com/wlinator/luminara.git
synced 2024-10-02 22:23:13 +00:00
commit
994959618e
61 changed files with 1028 additions and 990 deletions
15
.github/workflows/docker-image.yml
vendored
15
.github/workflows/docker-image.yml
vendored
|
@ -17,8 +17,7 @@ jobs:
|
||||||
packages: write
|
packages: write
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
-
|
- name: Docker meta
|
||||||
name: Docker meta
|
|
||||||
id: meta
|
id: meta
|
||||||
uses: docker/metadata-action@v5
|
uses: docker/metadata-action@v5
|
||||||
with:
|
with:
|
||||||
|
@ -31,25 +30,21 @@ jobs:
|
||||||
type=semver,pattern={{version}}
|
type=semver,pattern={{version}}
|
||||||
type=semver,pattern={{major}}.{{minor}}
|
type=semver,pattern={{major}}.{{minor}}
|
||||||
type=semver,pattern={{major}}
|
type=semver,pattern={{major}}
|
||||||
-
|
- name: Set up Docker Buildx
|
||||||
name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
-
|
- name: Login to Docker Hub
|
||||||
name: Login to Docker Hub
|
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
-
|
- name: Login to GHCR
|
||||||
name: Login to GHCR
|
|
||||||
if: github.event_name != 'pull_request'
|
if: github.event_name != 'pull_request'
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
-
|
- name: Build and push
|
||||||
name: Build and push
|
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
push: ${{ github.event_name != 'pull_request' }}
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# Contributing to Luminara
|
# Contributing to Luminara
|
||||||
|
|
||||||
Thank you for your interest in contributing to Lumi! We welcome contributions from the community to help improve and expand the bot's functionality. Please follow these guidelines when contributing:
|
Thank you for your interest in contributing to Lumi! We welcome contributions from the community to help improve and
|
||||||
|
expand the bot's functionality. Please follow these guidelines when contributing:
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
|
@ -28,17 +29,21 @@ Thank you for your interest in contributing to Lumi! We welcome contributions fr
|
||||||
|
|
||||||
1. **Create a Branch:** Create a new branch for your changes.
|
1. **Create a Branch:** Create a new branch for your changes.
|
||||||
2. **Code Style:** Adhere to the existing code style and formatting conventions.
|
2. **Code Style:** Adhere to the existing code style and formatting conventions.
|
||||||
3. **Strict Typing:** Always use strict typing (e.g., `str`, `int`, `List[str]`) for better code quality and maintainability.
|
3. **Strict Typing:** Always use strict typing (e.g., `str`, `int`, `List[str]`) for better code quality and
|
||||||
4. **Pre-Commit Checks:** Before committing, run pre-commit checks to ensure your code passes linting and formatting standards.
|
maintainability.
|
||||||
|
4. **Pre-Commit Checks:** Before committing, run pre-commit checks to ensure your code passes linting and formatting
|
||||||
|
standards.
|
||||||
5. **Clear Commit Messages:** Write clear and concise commit messages that describe the changes you made.
|
5. **Clear Commit Messages:** Write clear and concise commit messages that describe the changes you made.
|
||||||
|
|
||||||
## Submitting Changes
|
## Submitting Changes
|
||||||
|
|
||||||
1. **Create a Pull Request:** Create a pull request (PR) from your branch to the `main` branch of the original repository.
|
1. **Create a Pull Request:** Create a pull request (PR) from your branch to the `main` branch of the original
|
||||||
|
repository.
|
||||||
2. **Review:** Your PR will be reviewed by the Sourcery & Lumi maintainers. Address any feedback or requested changes.
|
2. **Review:** Your PR will be reviewed by the Sourcery & Lumi maintainers. Address any feedback or requested changes.
|
||||||
3. **Merge:** Once approved, your PR will be merged into the main branch.
|
3. **Merge:** Once approved, your PR will be merged into the main branch.
|
||||||
|
|
||||||
## Additional Notes
|
## Additional Notes
|
||||||
|
|
||||||
* **Documentation:** If you add new functionality or change existing behavior, update or add the docstrings accordingly.
|
* **Documentation:** If you add new functionality or change existing behavior, update or add the docstrings accordingly.
|
||||||
|
|
||||||
Thank you for your contributions!
|
Thank you for your contributions!
|
||||||
|
|
|
@ -9,10 +9,10 @@ import Client
|
||||||
import config.parser
|
import config.parser
|
||||||
import services.config_service
|
import services.config_service
|
||||||
import services.help_service
|
import services.help_service
|
||||||
from lib.constants import CONST
|
|
||||||
from services.blacklist_service import BlacklistUserService
|
|
||||||
from lib.exceptions.LumiExceptions import Blacklisted
|
|
||||||
from db.database import run_migrations
|
from db.database import run_migrations
|
||||||
|
from lib.constants import CONST
|
||||||
|
from lib.exceptions.LumiExceptions import Blacklisted
|
||||||
|
from services.blacklist_service import BlacklistUserService
|
||||||
|
|
||||||
# Remove the default logger configuration
|
# Remove the default logger configuration
|
||||||
logger.remove()
|
logger.remove()
|
||||||
|
|
|
@ -2,14 +2,15 @@
|
||||||
|
|
||||||
![Lumi art](https://git.wlinator.org/assets/img/logo.png)
|
![Lumi art](https://git.wlinator.org/assets/img/logo.png)
|
||||||
|
|
||||||
|
|
||||||
## Self-Hosting
|
## Self-Hosting
|
||||||
|
|
||||||
Self-hosting refers to running Luminara on your own server or computer, rather than using the publicly hosted version. This approach offers the ability to manage your own instance of the bot and give it a custom name and avatar.
|
Self-hosting refers to running Luminara on your own server or computer, rather than using the publicly hosted version.
|
||||||
|
This approach offers the ability to manage your own instance of the bot and give it a custom name and avatar.
|
||||||
|
|
||||||
### Requirements
|
### Requirements
|
||||||
|
|
||||||
Before you begin, make sure you have the following installed on your system:
|
Before you begin, make sure you have the following installed on your system:
|
||||||
|
|
||||||
- [Docker](https://docs.docker.com/get-docker/)
|
- [Docker](https://docs.docker.com/get-docker/)
|
||||||
- [Docker Compose](https://docs.docker.com/compose/install/)
|
- [Docker Compose](https://docs.docker.com/compose/install/)
|
||||||
|
|
||||||
|
@ -25,7 +26,8 @@ Additionally, you'll need to create a Discord bot application and obtain a token
|
||||||
|
|
||||||
### Running Luminara:
|
### Running Luminara:
|
||||||
|
|
||||||
1. Copy the contents from [`docker-compose.prod.yml`](docker-compose.prod.yml) to a new file named `docker-compose.yml` in an empty directory.
|
1. Copy the contents from [`docker-compose.prod.yml`](docker-compose.prod.yml) to a new file named `docker-compose.yml`
|
||||||
|
in an empty directory.
|
||||||
|
|
||||||
2. Copy the contents from [`.env.example`](.env.example) to a new file named `.env` in the same directory.
|
2. Copy the contents from [`.env.example`](.env.example) to a new file named `.env` in the same directory.
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
Versions currently being supported with security updates.
|
Versions currently being supported with security updates.
|
||||||
|
|
||||||
| Version | Supported |
|
| Version | Supported |
|
||||||
| ------- | ------------------ |
|
|---------|--------------------|
|
||||||
| 2.x | :white_check_mark: |
|
| 2.x | :white_check_mark: |
|
||||||
| 1.x | :x: |
|
| 1.x | :x: |
|
||||||
| < 1.0 | :x: |
|
| < 1.0 | :x: |
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
import mysql.connector
|
|
||||||
from loguru import logger
|
|
||||||
from mysql.connector import pooling
|
|
||||||
import os
|
import os
|
||||||
import pathlib
|
import pathlib
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
import mysql.connector
|
||||||
|
from loguru import logger
|
||||||
|
from mysql.connector import pooling
|
||||||
|
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import contextlib
|
import contextlib
|
||||||
|
|
||||||
from discord import Message
|
from discord import Message
|
||||||
from discord.ext.commands import Cog
|
from discord.ext.commands import Cog
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
|
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,9 +3,9 @@ import textwrap
|
||||||
import discord
|
import discord
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
from pytimeparse import parse
|
from pytimeparse import parse
|
||||||
from lib.exceptions.LumiExceptions import LumiException
|
|
||||||
from lib.constants import CONST
|
|
||||||
|
|
||||||
|
from lib.constants import CONST
|
||||||
|
from lib.exceptions.LumiExceptions import LumiException
|
||||||
from services.config_service import GuildConfig
|
from services.config_service import GuildConfig
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import discord
|
import discord
|
||||||
|
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
from lib.embed_builder import EmbedBuilder
|
from lib.embed_builder import EmbedBuilder
|
||||||
from services.currency_service import Currency
|
from services.currency_service import Currency
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
|
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
from services.blacklist_service import BlacklistUserService
|
|
||||||
from lib.embed_builder import EmbedBuilder
|
from lib.embed_builder import EmbedBuilder
|
||||||
|
from services.blacklist_service import BlacklistUserService
|
||||||
|
|
||||||
|
|
||||||
async def blacklist_user(
|
async def blacklist_user(
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import mysql.connector
|
import mysql.connector
|
||||||
|
|
||||||
|
from db import database
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
from lib.embed_builder import EmbedBuilder
|
from lib.embed_builder import EmbedBuilder
|
||||||
from lib.formatter import shorten
|
from lib.formatter import shorten
|
||||||
|
|
||||||
from db import database
|
|
||||||
|
|
||||||
|
|
||||||
async def select_cmd(ctx, query: str):
|
async def select_cmd(ctx, query: str):
|
||||||
if query.lower().startswith("select "):
|
if query.lower().startswith("select "):
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
import discord
|
import discord
|
||||||
|
|
||||||
|
from lib.constants import CONST
|
||||||
from lib.embed_builder import EmbedBuilder
|
from lib.embed_builder import EmbedBuilder
|
||||||
from lib.exceptions.LumiExceptions import LumiException
|
from lib.exceptions.LumiExceptions import LumiException
|
||||||
from lib.constants import CONST
|
|
||||||
|
|
||||||
|
|
||||||
async def sync_commands(client, ctx):
|
async def sync_commands(client, ctx):
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
import datetime
|
import datetime
|
||||||
import pytz
|
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
|
import pytz
|
||||||
from discord.commands import SlashCommandGroup
|
from discord.commands import SlashCommandGroup
|
||||||
from discord.ext import commands, tasks
|
from discord.ext import commands, tasks
|
||||||
|
|
||||||
from lib import checks
|
from lib import checks
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
from modules.birthdays import birthday, daily_check
|
from modules.birthdays import birthday, daily_check
|
||||||
|
|
|
@ -4,8 +4,8 @@ import datetime
|
||||||
import discord
|
import discord
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
|
|
||||||
from lib.embed_builder import EmbedBuilder
|
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
|
from lib.embed_builder import EmbedBuilder
|
||||||
from services.birthday_service import Birthday
|
from services.birthday_service import Birthday
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
import random
|
import random
|
||||||
|
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
|
from lib.embed_builder import EmbedBuilder
|
||||||
from services.birthday_service import Birthday
|
from services.birthday_service import Birthday
|
||||||
from services.config_service import GuildConfig
|
from services.config_service import GuildConfig
|
||||||
from lib.embed_builder import EmbedBuilder
|
|
||||||
|
|
||||||
|
|
||||||
async def daily_birthday_check(client):
|
async def daily_birthday_check(client):
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
import discord
|
import discord
|
||||||
from discord.ext.commands import guild_only
|
|
||||||
from discord.commands import SlashCommandGroup
|
from discord.commands import SlashCommandGroup
|
||||||
from discord.ext import bridge, commands
|
from discord.ext import bridge, commands
|
||||||
|
from discord.ext.commands import guild_only
|
||||||
|
|
||||||
from modules.config import (
|
from modules.config import (
|
||||||
c_birthday,
|
c_birthday,
|
||||||
c_boost,
|
c_boost,
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import discord
|
import discord
|
||||||
from lib.embed_builder import EmbedBuilder
|
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
|
from lib.embed_builder import EmbedBuilder
|
||||||
from services.config_service import GuildConfig
|
from services.config_service import GuildConfig
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
import discord
|
import discord
|
||||||
from lib.embed_builder import EmbedBuilder
|
|
||||||
from lib.constants import CONST
|
|
||||||
from services.config_service import GuildConfig
|
|
||||||
from lib.exceptions.LumiExceptions import LumiException
|
|
||||||
import lib.formatter
|
import lib.formatter
|
||||||
|
from lib.constants import CONST
|
||||||
|
from lib.embed_builder import EmbedBuilder
|
||||||
|
from lib.exceptions.LumiExceptions import LumiException
|
||||||
|
from services.config_service import GuildConfig
|
||||||
|
|
||||||
|
|
||||||
async def set_boost_channel(ctx, channel: discord.TextChannel):
|
async def set_boost_channel(ctx, channel: discord.TextChannel):
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
import discord
|
import discord
|
||||||
from lib.embed_builder import EmbedBuilder
|
|
||||||
from lib.constants import CONST
|
|
||||||
from services.config_service import GuildConfig
|
|
||||||
from lib import formatter
|
from lib import formatter
|
||||||
|
from lib.constants import CONST
|
||||||
|
from lib.embed_builder import EmbedBuilder
|
||||||
|
from services.config_service import GuildConfig
|
||||||
|
|
||||||
|
|
||||||
async def set_level_channel(ctx, channel: discord.TextChannel):
|
async def set_level_channel(ctx, channel: discord.TextChannel):
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
import discord
|
import discord
|
||||||
from lib.embed_builder import EmbedBuilder
|
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
from services.moderation.modlog_service import ModLogService
|
from lib.embed_builder import EmbedBuilder
|
||||||
from lib.exceptions.LumiExceptions import LumiException
|
from lib.exceptions.LumiExceptions import LumiException
|
||||||
|
from services.moderation.modlog_service import ModLogService
|
||||||
|
|
||||||
|
|
||||||
async def set_mod_log_channel(ctx, channel: discord.TextChannel):
|
async def set_mod_log_channel(ctx, channel: discord.TextChannel):
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from lib.embed_builder import EmbedBuilder
|
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
|
from lib.embed_builder import EmbedBuilder
|
||||||
from services.config_service import GuildConfig
|
from services.config_service import GuildConfig
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
import discord
|
|
||||||
from typing import List, Tuple, Optional
|
from typing import List, Tuple, Optional
|
||||||
|
|
||||||
|
import discord
|
||||||
from discord import Guild
|
from discord import Guild
|
||||||
from lib.embed_builder import EmbedBuilder
|
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
|
from lib.embed_builder import EmbedBuilder
|
||||||
from services.config_service import GuildConfig
|
from services.config_service import GuildConfig
|
||||||
from services.moderation.modlog_service import ModLogService
|
from services.moderation.modlog_service import ModLogService
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import discord
|
import discord
|
||||||
|
|
||||||
from services.xp_service import XpRewardService
|
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
|
from services.xp_service import XpRewardService
|
||||||
|
|
||||||
|
|
||||||
async def show(ctx):
|
async def show(ctx):
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import discord
|
import discord
|
||||||
from discord.ext.commands import guild_only
|
|
||||||
from discord.ext import bridge, commands
|
from discord.ext import bridge, commands
|
||||||
|
from discord.ext.commands import guild_only
|
||||||
|
|
||||||
from modules.economy import balance, blackjack, daily, give, slots
|
from modules.economy import balance, blackjack, daily, give, slots
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -7,10 +7,10 @@ from discord.ext import commands
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
from lib import interaction
|
from lib import interaction
|
||||||
|
from lib.constants import CONST
|
||||||
|
from lib.exceptions.LumiExceptions import LumiException
|
||||||
from services.currency_service import Currency
|
from services.currency_service import Currency
|
||||||
from services.stats_service import BlackJackStats
|
from services.stats_service import BlackJackStats
|
||||||
from lib.exceptions.LumiExceptions import LumiException
|
|
||||||
from lib.constants import CONST
|
|
||||||
|
|
||||||
est = pytz.timezone("US/Eastern")
|
est = pytz.timezone("US/Eastern")
|
||||||
active_blackjack_games = {}
|
active_blackjack_games = {}
|
||||||
|
|
|
@ -7,11 +7,10 @@ import discord
|
||||||
import pytz
|
import pytz
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
|
|
||||||
|
from lib.constants import CONST
|
||||||
from services.currency_service import Currency
|
from services.currency_service import Currency
|
||||||
from services.stats_service import SlotsStats
|
from services.stats_service import SlotsStats
|
||||||
|
|
||||||
from lib.constants import CONST
|
|
||||||
|
|
||||||
est = pytz.timezone("US/Eastern")
|
est = pytz.timezone("US/Eastern")
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import discord
|
import discord
|
||||||
from discord.ext.commands import guild_only
|
|
||||||
from discord.ext import bridge, commands
|
from discord.ext import bridge, commands
|
||||||
|
from discord.ext.commands import guild_only
|
||||||
|
|
||||||
from modules.levels import leaderboard, level
|
from modules.levels import leaderboard, level
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
from discord.ext.commands import guild_only
|
|
||||||
from discord.commands import SlashCommandGroup
|
from discord.commands import SlashCommandGroup
|
||||||
from discord.ext import bridge, commands, tasks
|
from discord.ext import bridge, commands, tasks
|
||||||
|
from discord.ext.commands import guild_only
|
||||||
|
|
||||||
from Client import LumiBot
|
from Client import LumiBot
|
||||||
from modules.config import c_prefix
|
from modules.config import c_prefix
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
|
from discord.ext.commands import MemberConverter
|
||||||
|
|
||||||
from lib import formatter
|
from lib import formatter
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
from lib.embed_builder import EmbedBuilder
|
from lib.embed_builder import EmbedBuilder
|
||||||
from modules.moderation.utils.actionable import async_actionable
|
from modules.moderation.utils.actionable import async_actionable
|
||||||
from modules.moderation.utils.case_handler import create_case
|
from modules.moderation.utils.case_handler import create_case
|
||||||
from typing import Optional
|
|
||||||
from discord.ext.commands import MemberConverter
|
|
||||||
|
|
||||||
|
|
||||||
async def ban_user(cog, ctx, target: discord.User, reason: Optional[str] = None):
|
async def ban_user(cog, ctx, target: discord.User, reason: Optional[str] = None):
|
||||||
|
|
|
@ -1,16 +1,18 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
|
from discord.ext import pages
|
||||||
from discord.ext.commands import UserConverter
|
from discord.ext.commands import UserConverter
|
||||||
from services.moderation.case_service import CaseService
|
|
||||||
|
from lib.constants import CONST
|
||||||
|
from lib.embed_builder import EmbedBuilder
|
||||||
|
from lib.formatter import format_case_number
|
||||||
from modules.moderation.utils.case_embed import (
|
from modules.moderation.utils.case_embed import (
|
||||||
create_case_embed,
|
create_case_embed,
|
||||||
create_case_list_embed,
|
create_case_list_embed,
|
||||||
)
|
)
|
||||||
from lib.embed_builder import EmbedBuilder
|
|
||||||
from lib.constants import CONST
|
|
||||||
from discord.ext import pages
|
|
||||||
from lib.formatter import format_case_number
|
|
||||||
from modules.moderation.utils.case_handler import edit_case_modlog
|
from modules.moderation.utils.case_handler import edit_case_modlog
|
||||||
|
from services.moderation.case_service import CaseService
|
||||||
|
|
||||||
case_service = CaseService()
|
case_service = CaseService()
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
|
from discord.ext.commands import UserConverter, MemberConverter
|
||||||
|
|
||||||
from lib import formatter
|
from lib import formatter
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
from lib.embed_builder import EmbedBuilder
|
from lib.embed_builder import EmbedBuilder
|
||||||
from modules.moderation.utils.actionable import async_actionable
|
from modules.moderation.utils.actionable import async_actionable
|
||||||
from modules.moderation.utils.case_handler import create_case
|
from modules.moderation.utils.case_handler import create_case
|
||||||
from typing import Optional
|
|
||||||
from discord.ext.commands import UserConverter, MemberConverter
|
|
||||||
|
|
||||||
|
|
||||||
async def kick_user(cog, ctx, target: discord.Member, reason: Optional[str] = None):
|
async def kick_user(cog, ctx, target: discord.Member, reason: Optional[str] = None):
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
import discord
|
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
|
import discord
|
||||||
from discord.ext.commands import MemberConverter, UserConverter
|
from discord.ext.commands import MemberConverter, UserConverter
|
||||||
|
|
||||||
from lib import formatter
|
from lib import formatter
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
from lib.embed_builder import EmbedBuilder
|
from lib.embed_builder import EmbedBuilder
|
||||||
|
|
|
@ -1,15 +1,16 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
import discord
|
|
||||||
import datetime
|
import datetime
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
import discord
|
||||||
|
from discord.ext.commands import UserConverter, MemberConverter
|
||||||
|
|
||||||
from lib import formatter
|
from lib import formatter
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
from lib.embed_builder import EmbedBuilder
|
from lib.embed_builder import EmbedBuilder
|
||||||
|
from lib.formatter import format_duration_to_seconds, format_seconds_to_duration_string
|
||||||
from modules.moderation.utils.actionable import async_actionable
|
from modules.moderation.utils.actionable import async_actionable
|
||||||
from modules.moderation.utils.case_handler import create_case
|
from modules.moderation.utils.case_handler import create_case
|
||||||
from typing import Optional
|
|
||||||
from discord.ext.commands import UserConverter, MemberConverter
|
|
||||||
from lib.formatter import format_duration_to_seconds, format_seconds_to_duration_string
|
|
||||||
|
|
||||||
|
|
||||||
async def timeout_user(
|
async def timeout_user(
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import discord
|
import discord
|
||||||
from lib.exceptions.LumiExceptions import LumiException
|
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
|
from lib.exceptions.LumiExceptions import LumiException
|
||||||
|
|
||||||
|
|
||||||
async def async_actionable(
|
async def async_actionable(
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
import discord
|
|
||||||
from lib.embed_builder import EmbedBuilder
|
|
||||||
from lib.constants import CONST
|
|
||||||
from lib.formatter import format_case_number
|
|
||||||
from typing import Optional
|
|
||||||
import datetime
|
import datetime
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
import discord
|
||||||
|
|
||||||
|
from lib.constants import CONST
|
||||||
|
from lib.embed_builder import EmbedBuilder
|
||||||
|
from lib.formatter import format_case_number
|
||||||
from lib.formatter import format_seconds_to_duration_string
|
from lib.formatter import format_seconds_to_duration_string
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
|
from discord.ext.commands import TextChannelConverter, UserConverter
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
|
from modules.moderation.utils.case_embed import create_case_embed
|
||||||
from services.moderation.case_service import CaseService
|
from services.moderation.case_service import CaseService
|
||||||
from services.moderation.modlog_service import ModLogService
|
from services.moderation.modlog_service import ModLogService
|
||||||
from modules.moderation.utils.case_embed import create_case_embed
|
|
||||||
from typing import Optional
|
|
||||||
from discord.ext.commands import TextChannelConverter, UserConverter
|
|
||||||
|
|
||||||
case_service = CaseService()
|
case_service = CaseService()
|
||||||
modlog_service = ModLogService()
|
modlog_service = ModLogService()
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
import discord
|
|
||||||
from typing import Optional
|
|
||||||
from discord.ext.commands import UserConverter, MemberConverter
|
|
||||||
import asyncio
|
import asyncio
|
||||||
from lib.embed_builder import EmbedBuilder
|
from typing import Optional
|
||||||
|
|
||||||
|
import discord
|
||||||
|
from discord.ext.commands import UserConverter, MemberConverter
|
||||||
|
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
from modules.moderation.utils.case_handler import create_case
|
from lib.embed_builder import EmbedBuilder
|
||||||
from modules.moderation.utils.actionable import async_actionable
|
from modules.moderation.utils.actionable import async_actionable
|
||||||
|
from modules.moderation.utils.case_handler import create_case
|
||||||
|
|
||||||
|
|
||||||
async def warn_user(ctx, target: discord.Member, reason: Optional[str]):
|
async def warn_user(ctx, target: discord.Member, reason: Optional[str]):
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import discord
|
import discord
|
||||||
from discord.ext.commands import guild_only
|
|
||||||
from discord.commands import SlashCommandGroup
|
from discord.commands import SlashCommandGroup
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
|
from discord.ext.commands import guild_only
|
||||||
|
|
||||||
from Client import LumiBot
|
from Client import LumiBot
|
||||||
from modules.triggers.add import add_reaction
|
from modules.triggers.add import add_reaction
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from discord.ext import bridge
|
from discord.ext import bridge
|
||||||
from services.reactions_service import CustomReactionsService
|
|
||||||
from lib.exceptions.LumiExceptions import LumiException
|
from lib import formatter
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
from lib.embed_builder import EmbedBuilder
|
from lib.embed_builder import EmbedBuilder
|
||||||
from lib import formatter
|
from lib.exceptions.LumiExceptions import LumiException
|
||||||
|
from services.reactions_service import CustomReactionsService
|
||||||
|
|
||||||
|
|
||||||
async def add_reaction(
|
async def add_reaction(
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
from discord.ext import bridge
|
from discord.ext import bridge
|
||||||
from services.reactions_service import CustomReactionsService
|
|
||||||
from lib.embed_builder import EmbedBuilder
|
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
|
from lib.embed_builder import EmbedBuilder
|
||||||
from lib.exceptions.LumiExceptions import LumiException
|
from lib.exceptions.LumiExceptions import LumiException
|
||||||
|
from services.reactions_service import CustomReactionsService
|
||||||
|
|
||||||
|
|
||||||
async def delete_reaction(ctx: bridge.Context, reaction_id: int) -> None:
|
async def delete_reaction(ctx: bridge.Context, reaction_id: int) -> None:
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
|
from typing import Any, Dict, List
|
||||||
|
|
||||||
|
import discord
|
||||||
from discord.ext import bridge, pages
|
from discord.ext import bridge, pages
|
||||||
|
|
||||||
|
from lib import formatter
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
from lib.embed_builder import EmbedBuilder
|
from lib.embed_builder import EmbedBuilder
|
||||||
from services.reactions_service import CustomReactionsService
|
from services.reactions_service import CustomReactionsService
|
||||||
from typing import Any, Dict, List
|
|
||||||
from lib import formatter
|
|
||||||
|
|
||||||
import discord
|
|
||||||
|
|
||||||
|
|
||||||
async def list_reactions(ctx: bridge.Context) -> None:
|
async def list_reactions(ctx: bridge.Context) -> None:
|
||||||
|
|
|
@ -2,6 +2,7 @@ from datetime import datetime, timedelta
|
||||||
from typing import List, Optional, Tuple
|
from typing import List, Optional, Tuple
|
||||||
|
|
||||||
import pytz
|
import pytz
|
||||||
|
|
||||||
from db import database
|
from db import database
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
from services.currency_service import Currency
|
from services.currency_service import Currency
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import discord
|
import discord
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
|
|
||||||
from lib.embed_builder import EmbedBuilder
|
|
||||||
from lib.constants import CONST
|
from lib.constants import CONST
|
||||||
|
from lib.embed_builder import EmbedBuilder
|
||||||
from lib.exceptions.LumiExceptions import LumiException
|
from lib.exceptions.LumiExceptions import LumiException
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
from db.database import execute_query, select_query_one, select_query_dict
|
|
||||||
from typing import Optional, Dict, Any, List
|
from typing import Optional, Dict, Any, List
|
||||||
|
|
||||||
|
from db.database import execute_query, select_query_one, select_query_dict
|
||||||
|
|
||||||
|
|
||||||
class CaseService:
|
class CaseService:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
from db.database import execute_query, select_query_one
|
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
|
from db.database import execute_query, select_query_one
|
||||||
|
|
||||||
|
|
||||||
class ModLogService:
|
class ModLogService:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|
Loading…
Reference in a new issue