Распознать активность участника дискорд сервера на питоне

Всем привет. Я сделал бота, который при подключении к голосовому каналу "Во что будем играть?" узнает игру запускаемую пользователем, перемещает участника в канал с названием игры. Но как бы я не старался, member.activity или member.activities всегда пустые (там есть пару строк от нейросетки и от ответов на похожие проблемы пользователей интернета). Так как я первый раз делаю бота, то не очень могу разобраться в документации discord.py либо в чужих кодах. Прилагаю скрипт:

import discord
from discord.ext import commands
import asyncio

intents = discord.Intents.default().all()
intents.voice_states = True
intents.members = True
intents.presences = True  # Убедитесь, что этот интент включен

bot = commands.Bot(command_prefix='--', intents=intents)

@bot.event
async def on_ready():
    print(f'Logged in as {bot.user}')

async def check_activity(member):
    while True:
        if member.voice and member.voice.channel.name == "Во что будем играть?":
            print(f"Checking activity for {member.name} in 'Во что будем играть?'")
            game_name = None
        
            for m in member.voice.channel.members:
                print(f"Checking member: {m.name}, activities: {m.activities}")  # Выводим активность участника
                for activity in m.activities:
                    if isinstance(activity, discord.Game):
                        game_name = activity.name
                        print(f"Found game '{game_name}' for {m.name}")
                        break
        
            if game_name:
                existing_channel = discord.utils.get(member.guild.voice_channels, name=game_name)
            
                if not existing_channel:
                    print(f"Creating new voice channel '{game_name}'")
                    existing_channel = await member.guild.create_voice_channel(name=game_name)
            
                if member.voice.channel != existing_channel:
                    print(f"Moving {member.name} to channel '{existing_channel.name}'")
                    await member.move_to(existing_channel)
                else:
                    print(f"{member.name} is already in the channel '{existing_channel.name}'")

        else:
            print(f"{member.name} is not in the channel 'Во что будем играть?'")

        await asyncio.sleep(1)

@bot.event
async def on_voice_state_update(member, before, after):
    if after.channel and after.channel.name == "Во что будем играть?":
       print(f"{member.name} has joined the voice channel 'Во что будем играть?'")
        bot.loop.create_task(check_activity(member))

    
# Замените 'YOUR_TOKEN' на токен вашего бота (я просто не стал вставлять его, он есть в запускаемом файле)
bot.run('')

Ответы (1 шт):

Автор решения: Бажен

Все решилось проще, чем я думал. В настройках дискорд, есть вкладка "Конфидециальность" (их 2 штуки, нужна конфидециальность игровой активности. Она ниже) , там необходимо включить параметр " Делитесь своими активностями с другими" Скрин с параметрами конфидециальности До этого, на этот вопрос отвечал другой пользователь, но так как я решил зарегистрироваться, вопрос переместился в мой аккаунт без его ответа. Выражаю благодарность за оперативность и верное решение вопроса.

→ Ссылка