📜  关于消息 discord py - Python (1)

📅  最后修改于: 2023-12-03 14:50:05.452000             🧑  作者: Mango

关于消息 discord py - Python

Discord py 是一个 Python 的库,可以方便开发 discord 机器人。它提供了很多功能,包括发送和接收消息,管理频道和服务器成员等。在 Discord 服务器中,消息是非常重要的一环,除了文字消息外,它还支持图片、链接、表情等多种消息格式。在本文中,我们将讲解如何在 discord py 中发送和接收消息。

发送消息

要发送消息,我们需要利用 discord.py 中的 discord.Client 类或者 discord.ext.commands.Bot 类。discord.Client 是一个基础的客户端对象,而 discord.ext.commands.Bot 是在其基础上的封装,可以更方便地注册和调用命令。

发送普通消息

我们可以利用 discord.Clientdiscord.ext.commands.Bot 对象的 send 方法来发送消息。例如:

import discord

client = discord.Client()

@client.event
async def on_ready():
    print(f'{client.user} 已登录')

@client.event
async def on_message(message):
    if message.content.startswith('$hello'):
        await message.channel.send('Hello!')

client.run('your-token')

本代码在接收到 $hello 这条消息时发送了一条 Hello! 的回复消息。

发送富文本消息

Discord 支持在消息中使用 Markdown 和一些自定义的语法,以获得丰富的消息格式。我们可以利用 discord.Embed 类来发送富文本消息。例如:

import discord

client = discord.Client()

@client.event
async def on_ready():
    print(f'{client.user} 已登录')

@client.event
async def on_message(message):
    if message.content.startswith('$info'):
        embed = discord.Embed(title="Python", description="Python 是一种跨平台的解释型、面向对象、动态数据类型的高级程序设计语言。", color=0x00ff00)
        embed.set_author(name="Python", icon_url="https://www.python.org/static/favicon.ico", url="https://www.python.org/")
        embed.set_thumbnail(url="https://www.python.org/static/opengraph-icon-200x200.png")
        embed.add_field(name="版本", value="3.9.7", inline=True)
        embed.add_field(name="官网", value="[python.org](https://www.python.org/)", inline=True)
        await message.channel.send(embed=embed)

client.run('your-token')

本代码在接收到 $info 这条消息时发送了一条包含 Python 相关信息的富文本消息。

接收消息

要接收消息,我们需要利用 discord.py 中的 discord.Client 类或者 discord.ext.commands.Bot 类和 on_message 事件。on_message 事件会在接收到消息后触发,我们可以在此事件中处理消息。

import discord

client = discord.Client()

@client.event
async def on_ready():
    print(f'{client.user} 已登录')

@client.event
async def on_message(message):
    if message.author == client.user:
        return
    
    if message.content.startswith('$hello'):
        await message.channel.send('Hello!')
    
    if message.content.startswith('$info'):
        embed = discord.Embed(title="Python", description="Python 是一种跨平台的解释型、面向对象、动态数据类型的高级程序设计语言。", color=0x00ff00)
        embed.set_author(name="Python", icon_url="https://www.python.org/static/favicon.ico", url="https://www.python.org/")
        embed.set_thumbnail(url="https://www.python.org/static/opengraph-icon-200x200.png")
        embed.add_field(name="版本", value="3.9.7", inline=True)
        embed.add_field(name="官网", value="[python.org](https://www.python.org/)", inline=True)
        await message.channel.send(embed=embed)

client.run('your-token')

本代码接收 $hello$info 两条消息,分别发送不同内容的回复消息。

以上是关于消息在 discord py 中的使用介绍,希望对你有所帮助。