parent
598cac6175
commit
531baab401
@ -0,0 +1,5 @@
|
||||
from .chatter import Chatter
|
||||
|
||||
|
||||
def setup(bot):
|
||||
bot.add_cog(Chatter(bot))
|
@ -0,0 +1,80 @@
|
||||
import asyncio
|
||||
from typing import List, Union
|
||||
|
||||
import discord
|
||||
from discord.ext import commands
|
||||
|
||||
from redbot.core import Config
|
||||
from redbot.core.bot import Red
|
||||
|
||||
from chatterbot import ChatBot
|
||||
from chatterbot.trainers import ListTrainer
|
||||
|
||||
|
||||
|
||||
class Chatter:
|
||||
"""
|
||||
This cog trains a chatbot that will talk like members of your Guild
|
||||
"""
|
||||
|
||||
def __init__(self, bot):
|
||||
self.bot = bot
|
||||
self.config = Config.get_conf(self, identifier=6710497116116101114)
|
||||
default_global = {}
|
||||
default_guild = {}
|
||||
|
||||
self.chatbot = ChatBot("Chatter", trainer=ListTrainer)
|
||||
|
||||
self.config.register_global(**default_global)
|
||||
self.config.register_guild(**default_guild)
|
||||
|
||||
async def _get_conversation(guild: discord.Guild):
|
||||
"""
|
||||
Compiles all conversation on the server this bot can get it's hands on
|
||||
Currently takes a stupid long time
|
||||
Returns a list of text
|
||||
"""
|
||||
out = []
|
||||
|
||||
for channel in guild.textchannels:
|
||||
try:
|
||||
async for message in channel.history(limit=None, reverse=True):
|
||||
out.append(message.content)
|
||||
except discord.Forbidden:
|
||||
pass
|
||||
except discord.HTTPException:
|
||||
pass
|
||||
|
||||
|
||||
return out
|
||||
|
||||
async def _train(data):
|
||||
try:
|
||||
self.chatbot.train(data)
|
||||
except:
|
||||
return False
|
||||
return True
|
||||
@commands.group()
|
||||
async def chatter(self, ctx: commands.Context):
|
||||
"""
|
||||
Base command for this cog. Check help for the commands list.
|
||||
"""
|
||||
if ctx.invoked_subcommand is None:
|
||||
await ctx.send_help()
|
||||
|
||||
@reactrestrict.command()
|
||||
async def train(self, ctx: commands.Context):
|
||||
"""
|
||||
Trains the bot based on language in this guild
|
||||
"""
|
||||
|
||||
conversation = await _get_conversation(ctx.guild)
|
||||
if not conversation:
|
||||
await ctx.send("Failed to gather training data")
|
||||
return
|
||||
|
||||
if await _train(conversation):
|
||||
await ctx.send("Training successful")
|
||||
else:
|
||||
await ctx.send("Error occurred")
|
||||
|
@ -0,0 +1,10 @@
|
||||
{
|
||||
"author" : ["Bobloy"],
|
||||
"bot_version" : [3,0,0],
|
||||
"description" : "Create an offline chatbot that talks like your average member using Machine Learning",
|
||||
"hidden" : false,
|
||||
"install_msg" : "Thank you for installing Chatter.",
|
||||
"requirements" : ["chatterbot"],
|
||||
"short" : "Local Chatbot run on machine learning",
|
||||
"tags" : ["chat", "chatbot", "cleverbot", "clever","bobloy"]
|
||||
}
|
Loading…
Reference in new issue