157 lines
4.1 KiB
Python
157 lines
4.1 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, gdpr, command_cache
|
|
import scanners
|
|
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.15.3",
|
|
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(
|
|
"gdpr",
|
|
gdpr.process,
|
|
"gdpr: displays GDPR information",
|
|
gdpr.HELP,
|
|
)
|
|
bot.register_command(
|
|
"words",
|
|
lambda *args: scanners.WordsScanner().compute(*args),
|
|
"words: (BETA) rank words by their usage",
|
|
scanners.WordsScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"repeat",
|
|
command_cache.repeat,
|
|
"repeat: repeat last analysis (adding supplied arguments)",
|
|
"```\n%repeat: repeat last analysis (adding supplied arguments)\n```",
|
|
)
|
|
bot.register_command(
|
|
"mobile",
|
|
lambda *args: command_cache.repeat(*args, add_args=["mobile"]),
|
|
"mobile: fix @invalid-user for last command but mentions users",
|
|
"```\n%mobile: fix @invalid-user for last command but mentions users\n```",
|
|
)
|
|
bot.register_command(
|
|
"find",
|
|
lambda *args: scanners.FindScanner().compute(*args),
|
|
"find: find specific words or phrases",
|
|
scanners.FindScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"last",
|
|
lambda *args: scanners.LastScanner().compute(*args),
|
|
"last: read last message",
|
|
scanners.LastScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"(rand(om)?|mood)",
|
|
lambda *args: scanners.RandomScanner().compute(*args),
|
|
"rand: read a random message",
|
|
scanners.RandomScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"first",
|
|
lambda *args: scanners.FirstScanner().compute(*args),
|
|
"first: read first message",
|
|
scanners.FirstScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"mentioned",
|
|
lambda *args: scanners.MentionedScanner().compute(*args),
|
|
"mentioned: rank specific user mentions by their usage",
|
|
scanners.MentionedScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"(mentions?)",
|
|
lambda *args: scanners.MentionsScanner().compute(*args),
|
|
"mentions: rank mentions by their usage",
|
|
scanners.MentionsScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"(emojis?|emotes?)",
|
|
lambda *args: scanners.EmojisScanner().compute(*args),
|
|
"emojis: rank emojis by their usage",
|
|
scanners.EmojisScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"(react(ions?)?)",
|
|
lambda *args: scanners.ReactionsScanner().compute(*args),
|
|
"react: rank users by their reactions",
|
|
scanners.ReactionsScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"(channels?|chan)",
|
|
lambda *args: scanners.ChannelsScanner().compute(*args),
|
|
"chan: rank channels by their messages",
|
|
scanners.ChannelsScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"(messages?|msg)",
|
|
lambda *args: scanners.MessagesScanner().compute(*args),
|
|
"msg: rank users by their messages",
|
|
scanners.MessagesScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"pres(ence)?",
|
|
lambda *args: scanners.PresenceScanner().compute(*args),
|
|
"pres: presence analysis",
|
|
scanners.PresenceScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"compo(sition)?",
|
|
lambda *args: scanners.CompositionScanner().compute(*args),
|
|
"compo: composition analysis",
|
|
scanners.CompositionScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"freq(ency)?",
|
|
lambda *args: scanners.FrequencyScanner().compute(*args),
|
|
"freq: frequency analysis",
|
|
scanners.FrequencyScanner.help(),
|
|
)
|
|
bot.register_command(
|
|
"(full|scan)",
|
|
lambda *args: scanners.FullScanner().compute(*args),
|
|
"scan: full analysis",
|
|
scanners.FullScanner.help(),
|
|
)
|
|
|
|
bot.start()
|