[英]Discord.py --> channel.mention
我正在嘗試為 Discord 服務器制作一個機器人,它只是偵聽特定消息,刪除它們,然后將用戶引向不同的文本頻道(在可點擊的鏈接中提及它)
這是我現在所擁有的:
import Discord
import asyncio
client = discord.Client()
@client.event
async def on_message(message):
msg = '{0.author.mention}\nWrong text channel\nUse '.format(message)
if message.content.startswith('!p'):
await client.delete_message(message)
await client.send_message(message.channel, msg)
return
client.run('')
理想情況下,我還想用startswith()
而不是('!p')
& 來搜索一個列表,以忽略來自特定文本頻道的所有消息,但我也不知道該怎么做
不知道您的問題是否已解決,但對於所有未來的開發人員來說,正在查看此線程。 讓機器人提及頻道的超級簡單方法是這樣的......
<#channelID>
如果頻道 ID 是您要提及的特定頻道的不和諧 ID。
在一個例子中
await message.channel.send("Please go to <#channelID>")
老實說,我有點困惑,這個線程上沒有人已經提到過這一點,所以我覺得我錯過了你們都已經知道的東西,哈哈。
當然,只需添加text_channel = client.get_channel('1234567890')
並使用text_channel.mention
引用其提及(其中1234567890
是您要鏈接到的頻道的 ID)
所以代碼最終會看起來像這樣
@client.event
async def on_message(message):
text_channel = client.get_channel('1234567890')
msg = '{0.author.mention}\nWrong text channel\nUse {1.mention}'.format(message,text_channel)
if message.content.startswith('!p'):
await client.delete_message(message)
await client.send_message(message.channel, msg)
return
關於你的第二個問題,你可以做這樣的事情
arr = ['!p','!a','!b']
for a in arr:
if message.content.startswith(a):
break
else:
return
並刪除if message.content.startswith('!p'):
完全
要忽略特定頻道,請執行if message.channel.id == "9876543210":
在函數的頂部( 9876543210
是您要忽略命令的頻道的 ID)
通過這些更改,代碼看起來像這樣
@client.event
async def on_message(message):
if message.channel.id == "9876543210":
return
arr = ['!p','!a','!b']
for a in arr:
if message.content.startswith(a):
break
else:
return
text_channel = client.get_channel('1234567890')
msg = '{0.author.mention}\nWrong text channel\nUse {1.mention}'.format(message,text_channel)
await client.delete_message(message)
await client.send_message(message.channel, msg)
return
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.