Python 如何在discord.py中获取用户活动?
我正在尝试制作一个机器人,将用户正在玩的内容写入聊天室,但即使在游戏运行时,也不会一直显示任何内容 我做错了什么 工作代码:Python 如何在discord.py中获取用户活动?,python,python-3.x,discord,discord.py,Python,Python 3.x,Discord,Discord.py,我正在尝试制作一个机器人,将用户正在玩的内容写入聊天室,但即使在游戏运行时,也不会一直显示任何内容 我做错了什么 工作代码: from discord.ext import tasks import discord intents = discord.Intents.all() intents.presences = True class MyClient(discord.Client): def __init__(self, *args, **kwargs): s
from discord.ext import tasks
import discord
intents = discord.Intents.all()
intents.presences = True
class MyClient(discord.Client):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
async def on_ready(self):
print('Logged in as')
print(self.user.name)
print(self.user.id)
print('------')
@tasks.loop(seconds=5)
async def activity_task(self, message):
mentions = message.mentions
if len(mentions) == 0:
await message.reply("Remember to give someone to get status!")
else:
activ = mentions[0].activity
if activ is None:
await message.reply("None")
else:
await message.reply(activ.name)
@activity_task.before_loop
async def before_my_task(self):
await self.wait_until_ready()
async def on_message(self, message):
if message.content.startswith('!status'):
self.activity_task.start(message)
client = MyClient(intents=intents)
client.run('token')
正如谷神星所说,你需要允许意图。 转到开发人员页面,然后转到bot。向下滚动一点,您将看到: 打开状态和服务器成员意图 现在,在代码中,必须在开头添加以下内容:
intents = discord.Intents.all()
将bot启动代码更改为
client = MyClient(intents=intents)
现在,有了意图,你想要对方的活动。
因此,在activity_task方法中,您不能使用message.author,因为这将返回发送消息的人,而不是您提到的人
将其更改为:
async def activity_task(self, message):
mentions = message.mentions
if len(mentions) == 0:
await message.reply("Remember to give someone to get status!")
else:
activ = mentions[0].activity
if activ == None:
await messag.reply("None")
else:
await message.reply(activ.name)
现在,如果你这样做!status@[此处为有效ping],它应该返回他们正在执行的任何操作。必须注意:它必须是有效的ping。正如Ceres所说,您需要允许意图。 转到开发人员页面,然后转到bot。向下滚动一点,您将看到: 打开状态和服务器成员意图 现在,在代码中,必须在开头添加以下内容:
intents = discord.Intents.all()
将bot启动代码更改为
client = MyClient(intents=intents)
现在,有了意图,你想要对方的活动。
因此,在activity_task方法中,您不能使用message.author,因为这将返回发送消息的人,而不是您提到的人
将其更改为:
async def activity_task(self, message):
mentions = message.mentions
if len(mentions) == 0:
await message.reply("Remember to give someone to get status!")
else:
activ = mentions[0].activity
if activ == None:
await messag.reply("None")
else:
await message.reply(activ.name)
现在,如果你这样做!status@[此处为有效ping],它应该返回他们正在执行的任何操作。必须注意:必须是有效的ping。您需要启用状态您需要启用状态您还必须在代码中启用它们。是的,添加了这一点@Łukaszkwiecinski他创建了自己的客户机类,所以它不是bot=discord.cliententents=intents,而是client=myclientents=intents@Łukaszkwiecinski好吧,我会修复我添加并启用了上面描述的所有内容,但是bot仍然不能正常工作。你还必须在代码中启用它们。是的,补充道@Łukaszkwiecinski他创建了自己的客户机类,所以它不是bot=discord.cliententents=intents,而是client=mycliententents=intents@Łukaszkwiecinski好的,我会修复我添加并启用了上面描述的所有内容,但是bot仍然不能正常工作