Selfbot无法读取用户的活动

时间:2020-08-31 22:19:42

标签: python discord.py

我正在尝试打印当前activity(s)用户。如果我在听Spotify,它应该返回(Spotify)。我通过侦听Spotify并在自己身上运行命令进行了测试,但是它会打印一个空的元组。如果我在一个朋友上使用此命令,并且他们已经发现或正在运行任何游戏,它将返回那里所有当前活动。

主脚本(/bot/Main.py)

loop = asyncio.get_event_loop()
extensions = ['cogs.bot']

selfbot = commands.Bot(command_prefix='!',self_bot=True)
loop.create_task(selfbot.start(personalToken, bot=False))

if __name__ == '__main__':
    selfbot.load_extension(extensions[1])
    
loop.run_forever()

齿轮(/bot/cogs/bot.py)

class bot(commands.Cog):
    def __init__(self, bot):
        self.bot = bot

    @commands.command()
    async def activities(self, ctx, user=None):
        if user == None:
            user = ctx.author
            
        else:
            user = ctx.message.mentions[0]
    
        for activity in user.activities:
            print('activity:', activity)

def setup(bot):
    bot.add_cog(bot(bot))

如何使它打印出我的活动,为什么不将其与当前代码一起打印出来?

2 个答案:

答案 0 :(得分:0)

我已经用不同的方式尝试了多次,并且遇到了同样的问题,经过一番搜索,我发现这是一个不和谐的问题,您无法看到自己的状态,因为机器人可以不能获得自己的地位。

答案 1 :(得分:0)

好吧,您可以查看自己的活动(以及您自己的状态和自定义状态)。有多种方法可以做到这一点,但我建议使用 discum,这是一种用于 selfbots/userbots 的 API 包装器。请注意,discum 仅适用于 selfbots/userbots,不适用于实际的 BOT 帐户。

这是一个例子(使用光盘):

import discum
bot = discum.Client(token='your token here')

@bot.gateway.command
def helloworldsomething(resp):
    if resp.event.session_replaced:
        print(f"activities: {bot.gateway.session.userSettings['activities']}")

bot.gateway.run()

此外,在网关运行时,您可以使用以下方法获取客户端的当前状态和自定义状态:
bot.gateway.session.userSettings['status']

bot.gateway.session.userSettings['custom_status']