-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Пользовательский статус "Слушает" вместо "Играет в игру" #22
Comments
вроде невозможно |
Можно |
будет хорошо если добавят эту функцию |
Будет время. Предоставлю небольшой код для костомного статуса, чтобы автору было легче. |
буду премного благодарен |
Это невозможно, только Spotify обладает такой возможностью благодаря собственной интеграции с Discord. |
это очень грустно, я думал можно ведь человек выше написал что даст основу кода для кастомного статуса |
Ну как я сказал, это невозможно. Так что не знаю что он даст :) |
Это будет требовать использование веб-сокетов и личного Discord токена. Я не думаю, что это того стоит 🥺 |
Да я помню, что обещал. Но прочитав, что скорее всего может не работать так как может не воспроизвести описание, какая играет музыка.
|
Итак, я нашёл несколько свободных дней и решил попробовать воплотить эту идею. Я использовал три разных метода:
Документация везде очень расплывчатая и огромная, поэтому всё приходилось делать на ощупь. Вот максимальный результат, которого я смог достичь: К сожалению, мы теряем много функциональности по сравнению с текущим RPC, таких как кнопки, длительность трека, статус паузы и обложка. Особенно много времени я потратил на попытки разобраться с обложкой, но безуспешно. Кто то пишет, что динамические URL не поддерживаются, другие — что поддерживаются, но при этом не работают. В итоге, всё остаётся расплывчатым и непонятным, и это относится ко всем трём методам. Поэтому я, лично, прекращаю попытки реализации этой идеи. Это принесет больше проблем и неудобств, чем пользы. Кроме того, не забывайте, что всё это работает через личный токен Discord :) Если кто-то сможет реализовать подгрузку динамических обложек через WebSocket или любые библиотеки, буду рад видеть ваш pull request или сообщения здесь. |
может сделать пока типа такова? https://imgur.com/a/Xs7dl9F . Но я думаю это будет смотриеся кринова и не вписываться |
Хз возможно тупа мосор с нейросети, но может поможет. Шаг 1: Установка необходимых библиотекУстановите pip install pypresence Шаг 2: Получение клиентского ID и подготовка изображений
Шаг 3: Пример кода с динамическими обложками и статусом "слушает"import pypresence
import time
client_id = 'YOUR_CLIENT_ID' # Замените на ваш клиентский ID
RPC = pypresence.Presence(client_id)
RPC.connect()
def update_presence(track, artist, album, large_image_key, small_image_key):
RPC.update(
details=f"Слушает: {track}",
state=f"Исполнитель: {artist}",
large_image=large_image_key,
large_text=album,
small_image=small_image_key,
small_text="Yandex Music",
start=time.time()
)
# Обновите трек динамически
track_info = {
"track": "Example Track",
"artist": "Example Artist",
"album": "Example Album",
"large_image_key": "large_image_key",
"small_image_key": "small_image_key"
}
while True:
update_presence(**track_info)
time.sleep(15) # Обновление каждые 15 секунд Шаг 4: Использование WebSocket и личного токена DiscordДля этого понадобится использовать библиотеку
import websockets
import asyncio
import json
import time
token = 'YOUR_DISCORD_TOKEN'
async def send_rpc():
async with websockets.connect('wss://gateway.discord.gg/?v=6&encoding=json') as ws:
hello = await ws.recv()
heartbeat_interval = json.loads(hello)['d']['heartbeat_interval'] / 1000
# Авторизация
auth = {
"op": 2,
"d": {
"token": token,
"properties": {
"$os": "windows",
"$browser": "chrome",
"$device": "pc"
}
}
}
await ws.send(json.dumps(auth))
while True:
payload = {
"op": 3,
"d": {
"since": None,
"activities": [{
"name": "Yandex Music",
"type": 2, # 2 - слушает
"details": "Слушает Example Track",
"state": "Исполнитель: Example Artist",
"assets": {
"large_image": "large_image_key",
"large_text": "Example Album",
"small_image": "small_image_key",
"small_text": "Yandex Music"
},
"timestamps": {
"start": int(time.time())
}
}],
"status": "online",
"afk": False
}
}
await ws.send(json.dumps(payload))
await asyncio.sleep(heartbeat_interval)
asyncio.get_event_loop().run_until_complete(send_rpc()) ЗаключениеЭти примеры показывают, как обновлять статус в Rich Presence и использовать динамические обложки. Настройте их под свои нужды и убедитесь, что используете только легальные методы работы с токенами Discord. payload = {
"op": 3,
"d": {
"since": None,
"activities": [{
"name": "Yandex Music",
"type": 2, # 2 - слушает
"details": "Слушает Example Track",
"state": "Исполнитель: Example Artist",
"assets": {
"large_image": "large_image_key",
"large_text": "Example Album",
"small_image": "small_image_key",
"small_text": "Yandex Music"
},
"timestamps": {
"start": int(time.time())
}
}],
"status": "online",
"afk": False
}
} Использование |
Уточнение по динамическим обложкамDiscord Rich Presence имеет ограничения на использование динамических URL для изображений. Однако, вы можете обновлять изображения, заранее загруженные в Discord Developer Portal, используя их ключи. Полный пример кода с использованием WebSocket и pypresence
ЗаключениеЭти примеры помогут вам настроить статус "слушает" и использовать динамические обложки. |
К сожалению, chatgpt не понимает всех тонкостей API Discord. Впрочем, мало кто понимает. |
Я с тобой соглашусь |
Прошу прощения, что в каких-то вещах не шарю: вы пробовали связаться с командой Я.Музыки и передать им код? Может быть они что-то сделают со своей стороны? Например, свяжутся с командой Дискорда для полнофункциональной фичи с отображением статуса как в Спотике? |
Подобное пожелание уже писали на форуме предложений - https://yandexmusic.userecho.com/communities/45/topics/2672-integratsiya-s-discord?page=20 4 года назад... До сих пор не реализовали |
Брат скинь код) Очень надеемся на тебя @Kefisto |
Я реализовал этот функционал в версии 2.2.1. |
можно ли заменить надпись "играет в игру" на что-то по типу "слушает" было бы прикольно это видеть т.к будет более лаконично
![image](https://private-user-images.githubusercontent.com/152562652/331835218-f746ada3-e67e-4c30-b4a9-3057ae7094d5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQxMjY2OTYsIm5iZiI6MTcyNDEyNjM5NiwicGF0aCI6Ii8xNTI1NjI2NTIvMzMxODM1MjE4LWY3NDZhZGEzLWU2N2UtNGMzMC1iNGE5LTMwNTdhZTcwOTRkNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODIwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgyMFQwMzU5NTZaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wMTYwZGQ2ZDU0ZmRjNjNiMjJkYTA1MDA3NDcwMmExMGNlMmJiNjc5Y2E4YzZkZDg3NGNlMDZiMTE0MTVmMDk3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.8NwU2ZY6RZCvKSc2LYPPV0VeF_mZMz3rZ0c8-5b4Q0k)
The text was updated successfully, but these errors were encountered: