【问题标题】:How do I make it so my discord bot will ask and answer in an order?我怎样才能让我的不和谐机器人按顺序提问和回答?
【发布时间】:2021-07-09 14:24:26
【问题描述】:

我对编码非常陌生,并且正在努力理解如何使我的不和谐机器人(我通过 python 创建)响应不同的代码行。

我已经提出了最初的问题和答案,但之后我无法让机器人响应任何内容。

例如,我的机器人将正确响应,直到它被要求检查/返回时间表区域。


def setup():
    return "Hello! Welcome to the timetable bot. What service would you like? (Timetable / Subjects / 
    Homework)"
#End of setup

global userState

def overheard(message, user):
    if "Timetable" in message:
        return timetableenquiry()
    elif "Homework" in message:
        return homeworkenquiry()
    elif "Subjects" in message:
        return subjectsenquiry()
    return "I'm sorry I don't understand that."

def timetableenquiry():
    return ("Okay. What would you like to do with your timetable? (Check / Back)")

def timetablecheck():
    if "Check" in message:
        print("Okay. You can check your timetable at: www.timetableaccess.com")


def homeworkenquiry():
    return ("Okay. What would you like to know about your homework?")

def subjectsenquiry():
    return ("Okay. What would you like to do with your subjects?")

感谢任何帮助,如果不清楚我在问什么,我深表歉意。

【问题讨论】:

  • 对你在做什么有点困惑,很多时候你返回一个字符串,看起来你需要打印时间表检查中的语句?什么调用了你的函数?
  • 如果我使用 print 而不是返回一个字符串,那么我该如何编写更多代码并继续对话呢?我的印象是返回一个字符串并在上面创建代码会更容易,但是我也无法让它工作。
  • 因此您将拥有“用户输入”,然后是一些潜在的“输出”。每个字符串除非打印到控制台,否则不会显示给用户,除非有一些不和谐的功能正在处理这个问题?通过快速浏览互联网,我可以看到有关如何创建不和谐机器人的教程。 realpython.com/how-to-make-a-discord-bot-python你关注过类似的吗?似乎还有更多只是编写控制台应用程序。
  • 是的,我很抱歉,我有一组客户端事件来处理代码和不和谐本身之间的所有交互。我的问题是我对如何编写代码知之甚少。不过,我感谢您的帮助,并且我认为我对退货和打印等有了更好的了解。

标签: python discord bots


【解决方案1】:

您应该使用 Message.Content 来检测它,您还希望机器人实际输入 Discord CHANNEL。还要尝试添加前缀,这样机器人就不会随机输入。

看看这个:

import discord
import os

client = discord.Client()

@client.event
async def on_message(message): #Defines Message
  
  #If You Type TimeTable, And Role Requirement to Do So

  if message.content.startswith('-timetable'):
     await message.channel.send("Okay. What would you like to do with your timetable? (Check / Back)")
   
  elif message.content.startswith('-homework'):
     await message.channel.send("Okay. What would you like to know about your homework?")

  
  elif message.content.startswith('-subject'):
     await message.channel.send("Okay. What would you like to know about your subject?")

client.run(os.getenv('TOKEN')) 
#Reminder: Put Your Token in a .env File and Write TOKEN=YOUR TOKEN.

编辑:我忘了定义客户,尝试使用更新的

【讨论】:

  • 这是否允许我在“await”语句之后添加更多选项和进一步对话?我有更多选项要添加,具体取决于用户决定做什么。
  • 请使用较新的代码,我没有为第一个定义客户端。
  • 但是是的,您可以在 await 语句中添加更多内容。但是,如果您键入 -timetable,只需给他们链接。这会容易得多,您无需添加其他检查。
猜你喜欢
  • 2022-11-11
  • 1970-01-01
  • 2020-04-15
  • 2021-07-24
  • 2021-11-15
  • 2018-04-18
  • 1970-01-01
  • 2021-04-06
  • 2019-06-14
相关资源
最近更新 更多