148 lines
3.4 KiB
Python
148 lines
3.4 KiB
Python
import sys
|
|
from miniscord import Bot
|
|
import logging
|
|
|
|
if sys.version_info < (3, 7):
|
|
print("Please upgrade your Python version to 3.7.0 or higher")
|
|
sys.exit(1)
|
|
|
|
from utils import emojis
|
|
from scanners import (
|
|
EmotesScanner,
|
|
FullScanner,
|
|
FrequencyScanner,
|
|
CompositionScanner,
|
|
PresenceScanner,
|
|
MentionsScanner,
|
|
MentionedScanner,
|
|
MessagesScanner,
|
|
ChannelsScanner,
|
|
ReactionsScanner,
|
|
FirstScanner,
|
|
RandomScanner,
|
|
LastScanner,
|
|
WordsScanner,
|
|
)
|
|
from logs import GuildLogs
|
|
|
|
logging.basicConfig(
|
|
format="[%(asctime)s][%(levelname)s][%(module)s] %(message)s", level=logging.INFO
|
|
)
|
|
|
|
emojis.load_emojis()
|
|
|
|
bot = Bot(
|
|
"Discord Analyst",
|
|
"1.12",
|
|
alias="%",
|
|
)
|
|
|
|
bot.log_calls = True
|
|
|
|
|
|
async def on_ready():
|
|
GuildLogs.check_logs(bot.client.guilds)
|
|
return True
|
|
|
|
|
|
async def on_guild_remove():
|
|
GuildLogs.check_logs(bot.client.guilds)
|
|
return True
|
|
|
|
|
|
bot.register_event(on_ready)
|
|
bot.register_event(on_guild_remove)
|
|
|
|
bot.register_command(
|
|
"(cancel|stop)",
|
|
GuildLogs.cancel,
|
|
"cancel: stop current analysis (not launched with fast)",
|
|
"```\n" + "%cancel: Stop current analysis (not launched with fast)\n" + "```",
|
|
)
|
|
bot.register_command(
|
|
"words",
|
|
lambda *args: WordsScanner().compute(*args),
|
|
"words: (BETA) rank words by their usage",
|
|
WordsScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"last",
|
|
lambda *args: LastScanner().compute(*args),
|
|
"last: read last message",
|
|
LastScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"rand(om)?",
|
|
lambda *args: RandomScanner().compute(*args),
|
|
"rand: read a random message",
|
|
RandomScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"first",
|
|
lambda *args: FirstScanner().compute(*args),
|
|
"first: read first message",
|
|
FirstScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"mentioned",
|
|
lambda *args: MentionedScanner().compute(*args),
|
|
"mentioned: rank specific user mentions by their usage",
|
|
MentionedScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"(mentions?)",
|
|
lambda *args: MentionsScanner().compute(*args),
|
|
"mentions: rank mentions by their usage",
|
|
MentionsScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"(emojis?|emotes?)",
|
|
lambda *args: EmotesScanner().compute(*args),
|
|
"emojis: rank emojis by their usage",
|
|
EmotesScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"(react(ions?)?)",
|
|
lambda *args: ReactionsScanner().compute(*args),
|
|
"react: rank users by their reactions",
|
|
ReactionsScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"(channels?|chan)",
|
|
lambda *args: ChannelsScanner().compute(*args),
|
|
"chan: rank channels by their messages",
|
|
ChannelsScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"(messages?|msg)",
|
|
lambda *args: MessagesScanner().compute(*args),
|
|
"msg: rank users by their messages",
|
|
MessagesScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"pres(ence)?",
|
|
lambda *args: PresenceScanner().compute(*args),
|
|
"pres: presence analysis",
|
|
PresenceScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"compo(sition)?",
|
|
lambda *args: CompositionScanner().compute(*args),
|
|
"compo: composition analysis",
|
|
CompositionScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"freq(ency)?",
|
|
lambda *args: FrequencyScanner().compute(*args),
|
|
"freq: frequency analysis",
|
|
FrequencyScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"(full|scan)",
|
|
lambda *args: FullScanner().compute(*args),
|
|
"scan: full analysis",
|
|
FullScanner.help(),
|
|
)
|
|
|
|
bot.start()
|