📜  如何让机器人将你 dm 的任何内容发送到服务器 discord.py - Python (1)

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

如何让机器人将你 dm 的任何内容发送到服务器 discord.py - Python

如果你想要让你的discord机器人将其他用户的DM(直接消息)内容发送到服务器中,这里是一个简单的方法。

首先,你需要导入discord.py库和asyncio库。接着,你需要设置机器人的token和服务器的id。下面的代码演示了如何完成这个设置。

import discord
import asyncio

client = discord.Client()
token = "YOUR_TOKEN_HERE"
server_id = "YOUR_SERVER_ID_HERE"

然后,你需要编写一个asyncio的coroutine函数,来处理DM的内容并将其发送到服务器中。下面的代码是一个这样的函数的例子。

@client.event
async def on_message(message):
    if isinstance(message.channel, discord.DMChannel):
        server = client.get_guild(server_id)
        channel = server.get_channel("YOUR_CHANNEL_ID_HERE")
        author = message.author.display_name
        content = message.content
        await channel.send(f"DM from {author}: {content}")

在上述代码中,我们使用了on_message事件,并检查了消息的channel类型是否为DMChannel(也就是来自其他用户私信)。如果是,则通过服务器id和channel id获取服务器中的channel,并将DM的内容发送到该channel中。

最后,将上述代码与client运行的代码结合起来。

import discord
import asyncio

client = discord.Client()
token = "YOUR_TOKEN_HERE"
server_id = "YOUR_SERVER_ID_HERE"

@client.event
async def on_message(message):
    if isinstance(message.channel, discord.DMChannel):
        server = client.get_guild(server_id)
        channel = server.get_channel("YOUR_CHANNEL_ID_HERE")
        author = message.author.display_name
        content = message.content
        await channel.send(f"DM from {author}: {content}")

async def start_bot():
    await client.start(token)

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(start_bot())

现在你的机器人就可以将DM的内容发送到服务器中了。记得将代码中的YOUR_TOKEN_HEREYOUR_SERVER_ID_HEREYOUR_CHANNEL_ID_HERE替换为你自己的信息。

以上所有代码都可以在markdown中显示,格式如下:

```python
<YOUR_CODE_HERE>