python-3.x - 检查 TextChannel 的 id 并执行一些操作
问题描述
嘿大家我想删除特定文本频道中的所有消息我使用这种方法
@client.event
async def on_message(message):
for guild in client.guilds:
for channel in guild.text_channels:
if channel.id == 818522056261369906:
await message.delete()
它可以工作,但它会删除所有文本通道消息,而不仅仅是具有上述 id 的文本通道有什么问题
解决方案
它可以工作,但它会删除所有文本通道消息,而不仅仅是具有上述 id 的文本通道有什么问题
在检查您的机器人中是否存在某个频道(即通过检查该频道是否存在于您的机器人所在的所有公会中)时,您将删除该消息。您没有检查消息的频道 ID 是否与提供的 ID 匹配。这就是为什么它只检查该特定频道是否存在并继续删除该消息,而不管他们是否在该特定频道中。
for channel in guild.text_channels:
# you're checking if a certain channel in guild's
# text_channel matches the ID or not
if channel.id == 818522056261369906:
await message.delete()
但是您应该检查您的消息的频道 ID 是否与 ID 匹配。你可以这样做message.channel.id == 818522056261369906
。所以你的代码应该是这样的
if message.channel.id == 818522056261369906:
await message.delete()
推荐阅读
- label - 以编程方式从 Jira 中提取所有带有标签的项目的最佳方法是什么?
- spring-boot - Prometheus 端点未暴露
- c++ - 实现两种几乎相似的方法
- python-3.x - 如何使用 # 作为分隔符拆分文本文件,然后拆分分隔部分内的行?
- javascript - 只运行一次带有 GSAP 的 jQuery/Javascript 函数?
- regex - 使用 TRegEx 删除 HTML 标记之间的字符串
- reactjs - 对 React devtools chrome 扩展的未使用 JS 的 Lighthouse 报告感到困惑
- amazon-athena - 在 Amazon Athena 中创建临时函数
- simpy - 有没有办法在 simpy 中预定义积压队列?
- r - 当需要满足多个条件时,使用 case_when 创建新列