Бот для прослушивания музыки из ВК в телеграм
- Предыстория
- Возможности
- Установка
- Настройка
- Запуск
- Описание кнопок
- Доступные группы
- Доступные команды
- Поддержка
В мой тариф мобильного оператора входит безлимит на Telegram и безлимит на скорости 512 б/сек. Я заметил, что у Telegram скорость побольше, чем 512 б/сек. Слушать музыку из ВК не представлялось возможным из-за малой скорости. Так и появился этот бот.
- Прослушивание музыки из
своей библиотеки
- Прослушивание музыки из
рекомендаций
- Прослушивание музыки из
недельного
идневного
плейлиса - Прослушивание
популярной
музыки - Прослушивание
новинок
- Управление своей библиотекой (
удаление
идобавление
) Поиск
музыки- Дополнительные возможности (
решить пример
, безопасноевыполнение кода
) - Полное контролирование
прав для команд
- Распределение пользователей по
группам
(каждая группа имеетсвои права
) - Слушать музыку
друзей
Планы на будущее:
- Поиск похожих треков по выбранному
- Пофиксить баг парсинга битрейта и остальной информации о аудио
- Поддержка ID3v1
- Поддержка ID3v2
- Заголовок сверху
- Дополнительный заголовок сверху
- Фреймы
- padding
- footer
- Поддержка "голого" mp3 без ID3
- Загрузка музыки в telegram напрямую через MTProto
- Команда выдачи определённого разрешения пользователю
- Автоматическая горячая перезагрузка команды
- Пофиксить баг, что страница поиска перестаёт работать после перезагрузки бота
- Кэшировать рекомендации (при смене страницы каждый раз новое сейчас получается)
- Загрузить видео по ID из вк в тг
- Загрузить видео по URL в тг
- Прослушивание музыки из других плейлистов
- Авто отчиска кэша
- Рефакторинг кода
Скачать последний релиз с github: Или же командой через git (вместо !VERSION! указать последнюю версию из релизов):
git clone --branch !VERSION! https://github.com/Keller18306/musicFromVK.git
Скачать необходимые модули:
npm i
Скачать TypeScript Node:
npm i -g ts-node
Нужно создать файл config.ts в корневой директории проекта с содержимым:
import { Config } from './config.type'
export const config: Config = {
api_id: 1234567, //API Id приложения MTProto
api_hash: '826dbdaa1540d406ae3090add1805794', //API Hash приложения MTProto
tg_token: '1234567890:3KojcGP79eGW44UffUtf8Zabt_9ui7pOY80', //Токен от телеграм бота
vk_token: '6be59d30e6b346f17c4ca695df004f228379b78c261b0468b55da6f6dbfff5468beffa5c1dae4c0009ffa', //Токен от аккаунта вк
uploadThreads: 3 //Сколько одновременно частей загружать на сервер телеграм
}
Получить данные для MTProto можно тут: https://my.telegram.org/
Получить токен для бота телеграм можно тут: https://t.me/BotFather
Получить токен от вк можно тут: https://oauth.vk.com/authorize?client_id=6121396&scope=327710&redirect_uri=https://oauth.vk.com/blank.html&display=page&response_type=token&revoke=1
Запустить бота можно следующей командой
ts-node .
Во время первого запуска в консоли будет выведено сообщение о настройке. Вам необходимо скопировать данную команду и отправить боту, чтобы вы получили полные права.
Данная команда будет работать для всех пользователей, пока бот не будет перезагружен.
1 - Страница назад
2 - Обновить страницу
3 - Текущий номер страницы
4 - Получить все песни из страницы
5 - Страница вперёд
6 - Удалить из "моей музыки"
7 - Добавить в "мою музыку"
8 - Открыть похожую музыку
9 - Отправить событие о прослушивании (вероятнее всего вк это использует для формирования рекомендаций)
Группа | Разрешения | Описание |
---|---|---|
guest | bot.base.commands | Группа выдаётся всем, кто пишет боту (для экономии места автоматически в файл не заносится) |
member | всех групп выше + bot.get.playlist, bot.search.music, bot.get.recommendations, bot.get.audio, bot.get.popular |
Группа имеет доступ к прослушиванию музыки |
owner | всех групп выше + bot.get.music, bot.add.to.music, bot.send.start.event, bot.delete.music, bot.get.page, bot.get.friends |
Группа имеет доступ к редактировании музыки и различным взаимодейтсвием с аккаунтом |
admin | всех групп выше + bot.eval, bot.debug, bot.add.admin, bot.exec.js, bot.set.group |
Полный доступ ко всем командам |
ID | Команда | Минимальная группа | Разрешение | Описание |
---|---|---|---|---|
start | /start | guest | bot.base.commands | Открыть клавиатуру |
getId | /id | guest | bot.base.commands | Получает id текущего аккаунта |
math | /math | guest | bot.base.commands | Посчитать пример |
ping | /ping | guest | bot.base.commands | Проверяет работоспособноть бота и задержки к серверам Telegram |
checkUpdate | /checkUpdate | guest | bot.base.commands | Проверяет наличие новой версии бота |
setup | /setup | guest | bot.base.commands | Первоначальная настройка прав администратора |
myPermissions | /myPermissions | guest | bot.base.commands | Узнать ваши текущие права |
getMyCmds | /help | guest | bot.base.commands | Узнать доступные вам команды |
myGroup | /myGroup | guest | bot.base.commands | Узнать вашу текущую группу |
getCmdPerms | /getCmdPerms | guest | bot.base.commands | Узнать все команды и разрешения к ним |
getGroup | /getGroup | guest | bot.base.commands | Узнать разрешения группы |
getGroups | /getGroups | guest | bot.base.commands | Узнать все группы |
getPerms | /getPerms | guest | bot.base.commands | Узнать все разрешения |
dailyPlaylist | /getDaily | member | bot.get.playlist | Получает дневной плейлист с аккаунта |
weekPlaylist | /getWeek | member | bot.get.playlist | Получает недельный плейлист с аккаунта |
newPlaylist | /getNew | member | bot.get.playlist | Получает плейлист с новинками с аккаунта |
getRecommendations | /getRecommendations | member | bot.get.recommendations | Получает рекомендации с аккаунта |
getPopular | /getPopular | member | bot.get.popular | Получает популярную музыку |
genresPopular | /genresPopular | member | bot.get.popular | Получает жанры популярной музыки |
searchMusic | /search | member | bot.search.music | Поиск музыки в вк |
getMusic | /getMusic | owner | bot.get.music | Получает всю музыку с аккаунта |
getFriends | /getFriends | owner | bot.get.friends | Возвращает список друзей (есть возможность слушать их музыку) |
setGroup | /setGroup | admin | bot.set.group | Установить группу человеку |
eval | /eval | admin | bot.eval | Выполнение js кода в боте |
execJs | /js | admin | bot.exec.js | Выполнение js кода |
removeKeyboard | /removeKeyboard | admin | bot.debug | Удаляет клавиатуру |
test | /test | admin | bot.debug | Тестовая команда |
Баг? Проблема? Вопрос? - не бойтесь открывать issue по любому поводу!