首页 > 解决方案 > 是否可以通过discord.py获取用户所在的文本频道

问题描述

我正在尝试创建一个日志记录机器人,用于将消息存储在文本文件中。但我希望它专注于要监控的特定文本频道。有什么办法可以做到这一点吗?

代码:

import discord
class MyClient(discord.Client):
    async def on_ready(self):
        print('Logged on as', self.user)
    async def on_message(self, message):
        file = open("logs.txt", "a", encoding="utf-8")
        if message.author != self.user:
            file.write(str(message.author) + ": " + message.content + "\n\n")
        else:
            return
        file.close()
        if message.content == "!logs":
            file = open("logs.txt", encoding="utf-8")
            embed = discord.Embed(title="Logs in this channel", description="All Messages In This Channel")
            embed.add_field(name='logs', value=file.read())
            await message.channel.send(content=None, embed=embed)
            file.close()
        if message.content == "!deletelogs":
            with open("logs.txt", "w", encoding="utf-8"):
                pass
        if message.content == "!lockbothere":
            # Lock Bot To TextChannel
bot = MyClient()
bot.run("lolno")

标签: pythondiscorddiscord.py

解决方案


您可以只检查消息通道并使用 id 或名称。

如果您输入以下打印语句,您将看到这些值,然后可以根据需要添加条件语句。

print(f'message channel is {message.channel} id {message.channel.id} name {message.channel.name}')

message.channel将返回 discord.channel.TextChannel 对象(用于文本通道)

message.channel.id将返回通道 id 的整数值

message.channel.name将返回通道名称的字符串值(如“general”)


推荐阅读