2017-03-06 2 views
0

Je crée un bot de discordance qui fait jaillir des phrases générées aléatoirement dans le chat toutes les quelques secondes. J'essaie d'utiliser le module nltk pour rendre la structure de la phrase un peu meilleure, mais je suis rattrapé par une erreur et je n'arrive pas à la comprendre. (Je suis newish à python et j'ai appris tout ce que je devais savoir au fur et à mesure le long)Faire un bot discord, mais continuer à obtenir "missing 1 argument de position requis: 'self'"

erreur:.

File "/root/PycharmProjects/untitled/Loop.py", line 29, in background_loop 
    messages = [(POSifiedText.make_sentence(tries=8, max_overlap_total=14, default_max_overlap_ratio=5.6,))] 
TypeError: make_sentence() missing 1 required positional argument: 'self' 

code:

import asyncio 
    import random 
    import discord.ext.commands 
    import markovify 
    import nltk 
    import re 

    class POSifiedText(markovify.Text): 
     def word_split(self, sentence): 
      words = re.split(self.word_split_pattern , sentence) 
      words = ["::".join(tag) for tag in nltk.pos_tag (words)] 
      return words 

     def word_join(self, words): 
      sentence = " ".join(word.split("::")[0] for word in words) 
      return sentence 

    with open("/root/sample.txt") as f: 
     text = f.read() 


    text_model = (markovify.Text(text, state_size=1)) 

    client = discord.Client() 
    async def background_loop(): 
     await client.wait_until_ready() 
     while not client.is_closed: 
      channel = client.get_channel('ChannelIdHere') 
      messages = [(POSifiedText.make_sentence(tries=8, max_overlap_total=14, default_max_overlap_ratio=5.6,))] 
      await client.send_message(channel, random.choice(messages)) 
      await asyncio.sleep(10) 

    client.loop.create_task(background_loop()) 
    client.run("TokenHere") 

Répondre

1

Vous devez appeler make_sentence sur une instance de l'objet texte.

text_model.make_sentence(...) 

Je pense que vous voulez aussi utiliser votre classe personnalisée comme ceci:

text_model = POSifiedText(text, state_size=1) 
+0

quand j'utilise 'text_model = POSifiedText (markovify.Text (texte, state_size = 1))' 'je reçois TypeError : chaîne attendue ou objet semblable à un octet – Museman

+0

Modifié. J'ai oublié que tu as hérité de la classe. –