Bot无法处理与功能并行的多个请求(discord.py)

时间:2020-04-06 04:08:37

标签: python discord discord.py spacy

我试图使我的不和谐机器人一次响应多个人。我的功能之一是与spacy模块进行交互并处理大量文本。如果该函数被调用一次,并且最终又被冻结,因为它试图处理第一个请求。

nlp = spacy.load("en_core_web_sm")

@bot.event
async def on_message(message):
   if message.content.startswith('!research'):

       doc = 'long paragraphs...'

      #Searches through doc for sentences relating to a word
       nlp(doc) #Takes time to process here
       results = textacy.extract.semistructured_statements(document, 'a word')

我的问题:如何同时对多个请求运行相似的功能,或者我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

我通过创建另一个异步函数来解决此问题,当触发主事件时会调用它。

nlp = spacy.load("en_core_web_sm")

#Use async here!
async def researchCommand(doc, message): #Takes in doc and message so we can respond to author
    #Does processing here
    nlp(doc)


@bot.event
async def on_message(message): #Main function

    big_book = 'long paragraphs...'

    if message.content.startswith('!research'):
        await researchCommand(big_book, message)

现在您可以将多个请求与一个函数并行。