wechaty / python-wechaty

Python Wechaty is a Conversational RPA SDK for Chatbot Makers written in Python
https://wechaty.readthedocs.io/zh_CN/latest/
Apache License 2.0
1.62k stars 234 forks source link

πŸ›πŸ› Bug Report: a large number of repeated messages appear in the log When if-elif statement is used in the on_message method #266

Open coderwithai opened 3 years ago

coderwithai commented 3 years ago

requirements

a large number of repeated messages appear in the log When if-elif statement is used in the on_message method what is wrong with my code?

Reproduce your problem

import os
import asyncio
from typing import List, Optional, Union
from wechaty import Wechaty, Contact
from wechaty.user import Message, Room

class MyBot(Wechaty):
    async def on_message(self, msg: Message):
        """
        listen for message event
        """
        from_contact: Optional[Contact] = msg.talker()
        text = msg.text()
        room: Optional[Room] = msg.room()
        # print(from_contact.get_id() ,from_contact.payload.name,text)
        conversation: Union[Room, Contact] = from_contact if room is None else room

        if text.startswith('hi'):
            await conversation.ready()
            await conversation.say(' hello')
        elif text.startswith('say'):
            await conversation.ready()
            await conversation.say('say what?')

asyncio.run(MyBot().start())

Error info

# 2021-09-27 10:26:20,936 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@643c8491a29cae9eeba30b1471bef373f28f50e5216c70ca15f53fc226exxx> <Anr>       say>
2021-09-27 10:26:21,105 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:21,210 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:21,339 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:21,546 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:21,702 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:21,784 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:21,866 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:21,960 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:22,066 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:22,151 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:22,318 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:22,578 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:22,738 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:22,886 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:22,965 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:23,074 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:23,159 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:23,236 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:23,333 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:23,408 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:23,498 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:23,590 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:23,774 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:23,855 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:23,955 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:24,056 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:24,136 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:24,213 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:24,282 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:24,360 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:24,434 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:24,502 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:24,577 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:24,656 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:24,727 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:24,806 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:24,880 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:24,954 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:25,053 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>
2021-09-27 10:26:25,160 - Wechaty - INFO - receive message <Message#message_type_text[πŸ—£ Contact <@d88ca815db85e1391de68daee93ace0d75742f8d044014f9b29fe1f102xxx> <nickname>        say what?>

Your experiments

please tell us your experiments and ideas about this issue. It's valuable for us to help you find the solution.

lyleshaw commented 3 years ago

I have met the same problem. Use padlocal protocol can sovle the problem

coderwithai commented 3 years ago

I have met the same problem. Use padlocal protocol can sovle the problem

thanks!

but I don't hava a padlocal token

lyleshaw commented 3 years ago

I have met the same problem. Use padlocal protocol can sovle the problem

thanks!

but I don't hava a padlocal token

You can get a develop token here: https://wechaty.js.org/docs/contributor-program/ Or waiting for https://github.com/wechaty/python-wechaty-puppet-itchat's completion

coderwithai commented 3 years ago

I have met the same problem. Use padlocal protocol can sovle the problem

thanks! but I don't hava a padlocal token

You can get a develop token here: https://wechaty.js.org/docs/contributor-program/ Or waiting for https://github.com/wechaty/python-wechaty-puppet-itchat's completion

thanks a lot finally I ran it in another way without using elif or else

GaryDu0123 commented 2 years ago

Just a supplement, although I see this was posted on 2020.9.27

I think you may forget to determine whether the message is sent by the Bot, when you start sending the say what?, the bot will also receive messages sent by itself, so it becomes

Receive from Sender : text = say

text.startswith('say') -> True Then bot send say what?

Next

Receive from Bot : text = say what?

text.startswith('say') True Then bot send say what?

Receive from Bot : text = say what?

text.startswith('say') True Then bot send say what?

......

Now it becomes an endless loop, make a judge on msg.is_self() or msg.talker().self() will solve the problem