python - 在 Telebot 中开发的机器人在私人消息中工作,而不是在群组中工作
问题描述
我在 Telebot 中开发的机器人无法在群组中工作,它假设会发现“坏词”并删除消息,但无法正常工作。
我试图让它在私人消息上工作,它做到了
预期:从列表中删除包含单词的消息,并回复消息。
结果:仅在私人消息中而不是在群组中这样做:(
import telebot
import time
bot_token = 'TOKEN'
bot = telebot.TeleBot(token=bot_token)
bw = ['poop']
def has_curse(msgr):
b = False
for i in range(len(bw)):
if bw[i] in msgr:
b = True
break
return b
@bot.message_handler(func = lambda msg: msg.text is not None)
def at_answer(message):
if has_curse(message.text):
bot.reply_to(message,'your message has been deleted')
bot.delete_message(message.chat.id, message.message_id)
while True:
try:
bot.polling()
except Exception:
time.sleep(15)
解决方案
默认情况下,机器人以隐私模式运行。如文档中所述
在隐私模式下运行的机器人不会收到人们发送给群组的所有消息。相反,它只会收到:
- 以斜杠“/”开头的消息</li>
- 回复机器人自己的消息
- 服务消息(在群组中添加或删除的人等)
- 来自其会员频道的消息
因此,如果您的机器人根本没有收到更新,这就是原因。
由于您的机器人应该扫描组中发送的每条消息,因此使其工作的唯一方法是关闭隐私模式。
推荐阅读
- hashicorp-vault - 如何使用从策略创建的令牌访问 Vault 机密?
- tableau-api - 如何对表中的数据进行分组 (tableau)
- haskell - 在 Haskell 中将关联函数标记为严格以避免空间泄漏
- sql - SQL 查询以对照另一个表查找一个表
- azure - 子域 Azure WebApp
- .htaccess - 使用 .htaccess 处理不存在的路径并将 http 转换为 https
- saml - saml okta 重定向 idp 失败
- vhdl - VHDL程序不设置输出
- javascript - 使用 React-Hooks,如何防止从 Array.map 创建的组件在其兄弟姐妹之一更改状态时重新渲染?
- php - 在完成所有步骤之前,不要在数据库中存储任何内容