코딩이 처음 이니 기다려주세요. 불일치 봇을 다룰 때 일종의 중첩 명령과 응답이 가능한지 궁금합니다. 예를 들어, 명령을 사용하여 옵션을 확인하면 봇이 메시지에 대한 응답을 기다렸다가 그에 따라 응답합니다. 제가 의미하는 바를 설명하는 데 약간의 어려움이 있습니다. 예를 들어 보겠습니다. 봇에게 무언가를 요청합니다. 봇이 옵션을 제공합니다.이 옵션 중에서 선택합니다. 봇이 답변에 응답하거나 봇에게 사용자가 무엇을하도록 요청합니다. 다음 말하기 봇이 당신에게 무언가를 말하도록 요구합니다 당신이 무언가를 말함 봇은 응답에서 당신이 말한 것을 사용합니다
이미 존재하는 if 문에 on_message 명령을 중첩하려고 시도했지만 분명히 작동하지 않았습니다. 또한 전체 message.content 항목과 함께 다른 if 문을 추가하려고 시도했습니다. 봇이 응답 후 메시지를 고려하기를 바랍니다.
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith("!ml"):
message.content = message.content.lower().replace(' ', '')
if message.content in command1:
response = "Hello! To start type !ml menu. You will be given your options. Don't forget to type !ml before " \
"everything you tell me, so I know it's me your talking to! Thanks : ) "
elif message.content in command2:
response = "test"
if message.content in top:
await message.channel.send(response)
답장을받은 후 봇이 메시지를받을 것으로 예상했지만 봇은 처음부터 다시 시작됩니다.
첫 번째 명령이 입력되면 일종의 외부 상태 (예 : 전역 변수)를 사용하여이 사실을 추적하십시오. on_message
첫 번째 명령에 두 번째 명령에 대해 동일한 응답이 있으므로 해당 외부 상태를보고 그에 따라 수행 할 작업을 결정해야합니다. 테스트되지 않은 빠른 커프 (discord.py 설정이 없기 때문에) 예 :
in_progress = False
async def on_message(message):
if message.author == client.user:
return
elif "start" in message.content and not in_progress:
in_progress = True
await message.channel.send("You said `start`. Waiting for you to say `stop`.")
elif "stop" in message.content and in_progress:
in_progress = False
await message.channel.send("You said `stop`. Waiting for you to `start` again.")
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다