Discord.py在您被抢劫时发出警告

2024-05-14 01:12:40 发布

您现在位置:Python中文网/ 问答频道 /正文

这行代码有问题。。。它似乎不起作用。它应该在你被抢劫时警告你。它不起作用。请帮忙

@client.event
async def on_message(message):
  if message.content.startswith('pls rob <@709809471571886112>'):
    await message.channel.send("<@709809471571886112> You're being robbed!")

  if message.content.startswith('pls rob <@717501219639132225>'):
    await message.channel.send("<@717501219639132225> You're being robbed!")

Tags: 代码reyousend警告messageifchannel
2条回答

基于GGberry的响应,可以使用带有?的正则表达式将!字符标记为可选字符

import re

if re.match(r'pls rob <!?@709809471571886112>', message.content) is not None:
    # send message

您还可以在元组中收集用户ID,并在循环中检查它们,而不是复制逻辑

import re
USER_IDS = (709809471571886112, 717501219639132225)

@client.event
async def on_message(message):
    for user_id in USER_IDS:
        if re.match(rf'pls rob <!?@{user_id}>', message.content) is not None:
            await message.channel.send(f"<@{user_id}> You're being robbed!")

我看到当有人做了pls rob <@709809471571886112>时,你试图自己得到通知。检查消息是否以“pls rob<;@7098094711571886112>;”开头是不可靠的,因为用户提及的内容可能是<@!ID><@ID>

定义函数更可靠的方法是分别检查pls rob和您的ID:

@client.event
async def on_message(message):
  if 'pls rob' in message.content and '709809471571886112' in message.content:
    await message.channel.send("<@709809471571886112> You're being robbed!")

  if 'pls rob' in message.content and '717501219639132225' in message.content:
    await message.channel.send("<@717501219639132225> You're being robbed!")

因此,基本上,不需要在ID之间包含<@>

相关问题 更多 >