私はdiscord.pyでdiscordボットを作成していて、sayコマンドがありますが、ボットに任意の役割を言及させることができます。@everyoneと@hereについて言及するのをすでに止めていますが、役割について言及するのを止める方法がわかりません。これがコードです
async def say(ctx, *, message=None):
message = message or "You have to type a message"
message_components = message.split()
if "@everyone" in message_components or "@here" in message_components:
await ctx.send("You can not ping everyone")
return
await ctx.message.delete()
await ctx.send(message)
正規表現を使用できます。有効なユーザー名/ロールに使用できるのは大文字/小文字の英数字のみであると想定します。
import re
user_regex = r"@[a-zA-Z0-9]+"
message = "I'm tagging @you and @you2 in this message!"
match = re.findall(user_regex, message)
if match:
await ctx.send("You can not ping everyone")
return
もちろん、必要に応じて、ユーザー名に洗練された正規表現を使用できます。または、要件に応じて役割の正規表現を把握し、それに応じてマッチングを試すことができます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加