iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0

discord.py中有關於接收和發送Discord消息的一些主要內容如下:

接收消息

在discord.py中,可以通過監聽on_message事件來接收消息:

@bot.event
async def on_message(message):
    if message.content.startswith('hello'):
        await message.channel.send('Hi!')
    await bot.process_commands(message)

on_message會在每個消息到來時被調用。可以通過message.content獲取消息內容。

如果想使用指令訊息,可以這樣寫:

@bot.command()
async def hello(ctx):
    await ctx.send('Hi!')

ctx在之前有說過,這個參數是包含著內容上下文的一個傳入參數,包含著當前頻道資訊、傳送訊息的使用者這些等等,因此它是必須的,且也因為此原因可直接使用 .send 去做訊息的傳送。詳細可見官方文檔

這樣只會對命令消息做出響應。

發送消息

要發送消息,指令訊息的話可調用 ctx.send() 方法,另外也可以調用message.channel.send()方法:

await ctx.send('Hello')
await message.channel.send('Hello') 

此外,可以發送不同類型的消息:

  • await channel.send(embed=embed): 發送嵌入消息
  • await channel.send(file=file): 發送文件
  • await channel.send(view=view): 發送元件消息(可用來創建交互式消息,例如按鈕和下拉菜單。)

回覆消息

要回覆特定消息,可以使用Message.reply()方法:

await message.reply('Hello')

這樣會正確回覆該消息。

編輯消息

要編輯已發送的消息,可以使用Message.edit()來編輯消息內容:

msg = await message.channel.send('Hello')
await msg.edit(content='Hi') 

刪除消息

要刪除消息:

await message.delete()

總結一下,在discord.py中,接收消息通過on_message事件,發送消息通過channel.send(),可以發送多種類型的消息。可以使用reply()回覆消息,使用edit()編輯消息,使用delete()刪除消息。


上一篇
[DAY18]Discord bot命令處理
下一篇
[DAY20]Discord bot訊息保存
系列文
selenium爬蟲應用至discord bot30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言