python-wechaty
python-wechaty copied to clipboard
🐛🐛 Bug Report: a large number of repeated messages appear in the log When if-elif statement is used in the on_message method
requirements
- token type(one of web protocol, padlocal, paimon, wxwork, and more ...) [required]
wbe[uos]
- version of python-wechaty [required]
wechaty 0.8.24 wechaty-grpc 0.20.19 wechaty-plugin-contrib 0.0.12 wechaty-puppet 0.3.dev10 wechaty-puppet-hostie 0.2.16 wechaty-puppet-service 0.8.5
- version of wechaty docker image [optional]
wechaty/wechaty 0.65
Describe your problem
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.
I have met the same problem. Use padlocal protocol can sovle the problem
I have met the same problem. Use padlocal protocol can sovle the problem
thanks!
but I don't hava a padlocal token
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
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
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 sendsay what?
Next
Receive from Bot
: text = say what?
text.startswith('say')
True
Then bot sendsay what?
Receive from Bot
: text = say what?
text.startswith('say')
True
Then bot sendsay what?
......
Now it becomes an endless loop, make a judge on msg.is_self()
or msg.talker().self()
will solve the problem