Adding markov back to the bot
This commit is contained in:
parent
2812c7bebb
commit
fb3e27a9c7
45
app/cogs/markov.py
Normal file
45
app/cogs/markov.py
Normal file
@ -0,0 +1,45 @@
|
||||
from discord.ext import commands
|
||||
from discord import option
|
||||
import discord
|
||||
import markovify
|
||||
import random
|
||||
|
||||
|
||||
class Markov(commands.Cog):
|
||||
def __init__(self, bot):
|
||||
self.bot: commands.Bot = bot
|
||||
|
||||
@commands.slash_command(
|
||||
guild_ids=None,
|
||||
name="markov",
|
||||
description="Generate a markov chain based on a user in the server",
|
||||
)
|
||||
@option("User", description="Choose a member", input_type="user")
|
||||
async def markov(self, ctx: commands.Context, user: discord.Member):
|
||||
await ctx.defer()
|
||||
temp_message = await ctx.followup.send(
|
||||
"Just a moment, generating autism"
|
||||
)
|
||||
|
||||
# Get messages from passed in user
|
||||
authors_mesages = []
|
||||
for message in await ctx.history(limit=20000).flatten():
|
||||
if message.author.id == user.id and "https" not in message.content:
|
||||
authors_mesages.append(message.content)
|
||||
|
||||
# Make the model
|
||||
user_model = markovify.Text(". ".join(authors_mesages))
|
||||
model_json = user_model.to_json()
|
||||
|
||||
dummy = []
|
||||
for i in range(random.randint(3, 9)):
|
||||
dummy.append(str(user_model.make_sentence(max_words=25, tries=900)))
|
||||
await temp_message.edit(
|
||||
"Heres a markov chain based on %s's shitposts" % user.mention
|
||||
+ "\n\n"
|
||||
+ " ".join(dummy)
|
||||
)
|
||||
|
||||
|
||||
def setup(bot):
|
||||
bot.add_cog(Markov(bot))
|
@ -10,3 +10,4 @@ owotext
|
||||
pandas
|
||||
requests
|
||||
wolframalpha
|
||||
markovify
|
Loading…
x
Reference in New Issue
Block a user