python - 是否可以通过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")
解决方案
您可以只检查消息通道并使用 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”)
推荐阅读
- c++ - 哪些整数运算不安全?
- java - 为什么我的代码不计算字符串的第一个单词
- c# - 自定义 ASP.NET 图表的样式
- python - 查找具有共同起始元素的子列表 - python
- angular - 跨设备渲染 Angular 的实时变化
- hyperledger-fabric - 无法在 Composer Rest Server 中过滤数据
- authentication - ODBC 中的 InitString SqlAnywhere 12 身份验证
- python - 类型提示会提高 Python 的性能吗?
- animation - 使用 react-native Animated 为 Svg.G 制作动画
- python - 使用漂亮的汤和 css 访问标签