Форум программистов, компьютерный форум, киберфорум
Python: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.09.2021
Сообщений: 1

Дискорд бот

26.09.2021, 15:03. Показов 1422. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть код для включения песни для дискорд бота. Я хочу в него добавить функцию поиска песни по названию. Думал это сделать через проверку валидности URL. Видимо думал неправильно. Подскажите, пожалуйста, как исправить этот код
Код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
async def play(video_link, voice, message):
    ydl_opts = {'format': 'bestaudio', 'noplaylist': 'True'}
    FFMPEG_OPTIONS = {'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5', 'options': '-vn'}
    with YoutubeDL(ydl_opts) as ydl:
        info = ydl.extract_info(video_link, download=False)
    print(info.get('title'))
    URL = info['formats'][0]['url']
    voice.play(FFmpegPCMAudio(URL, **FFMPEG_OPTIONS),
               after=lambda x=None: new_audio(voice, message))
    if URL != info['formats'][0]['url']:
        query_string = urllib.parse.urlencode({
            "search_query": search
        })
        html_content = urllib.request.urlopen(
            "http://www.youtube.com/results?" + query_string
        )
        search_results = re.findall(r"watch\?v=(\S{11})", html_content.read().decode())
        voice.play(FFmpegPCMAudio("http://www.youtube.com/watch?v=" + search_results[0], **FFMPEG_OPTIONS),
                   after=lambda x=None: new_audio(voice, message))
    voice.play(FFmpegPCMAudio(URL, **FFMPEG_OPTIONS), after=lambda x=None: new_audio(voice, message))
    if message.content.startswith('!p') or message.content.startswith('!play'):
        embedVar = discord.Embed(title="__Сейчас играет__", description="", color=0xFF0000)
        embedVar.add_field(name="**Название**", value=info.get('title'), inline=False)
        embedVar.add_field(name="**Длительность**", value=info.get('duration'), inline=True)
        embedVar.add_field(name="**Дата загрузки**", value=info.get('upload_date'), inline=True)
        embedVar.set_thumbnail(url="https://s1.********************/uploads/images/2021/09/9ebbb544a1d1d259e490ba7afc4f3a03.png")
        embedVar.set_footer(text="By QGBot")
        embedVar.set_author(name=message.author.display_name, icon_url=message.author.avatar_url)
    await message.channel.send(embed=embedVar)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@client.event
async def on_message(message):
    if message.author == client.user:
        return
 
    if message.content.startswith('!join'):
        await join(message)
 
    elif message.content.startswith('!pause') or message.content.startswith('!pa'):
        voice = get(client.voice_clients, guild=message.channel.guild)
        await message.channel.send('**Паузим**')
        await pause(voice, message)
    elif message.content.startswith('!play') or message.content.startswith('!p'):
        await join(message)
        voice = get(client.voice_clients, guild=message.channel.guild)
        msg = message.content[1:].split()
        video_link = msg[1]
        if not voice.is_playing():
            await play(video_link, voice, message)
        else:
            await message.channel.send('**^^ Добавлено в очередь ^^**')
            queue.append(video_link)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.09.2021, 15:03
Ответы с готовыми решениями:

Как сделать чтобы бот дискорд командой рандомил 2 людей в голосовом канале?
Перерыл весь интернет и не нашел ответ на свой вопрос, надеюсь здесь я его найду. Вот например, пользователь пишет в чат команду...

Реакция в дискорд
ребят, может кто объяснить, как делать бота для прожатия реакций в дискорде?

Добавление песни в чат дискорд
Добрый день, дорогие форумчане! Я часто сижу с друзьями в дискорде и использую бота Rythm для прослушивания музыки. В любой чат канала дс...

1
16 / 10 / 6
Регистрация: 15.08.2021
Сообщений: 60
27.09.2021, 11:55
Как вариант использовать api от google (не самая лучшая идея) или устанавливаем youtube-search (https://pypi.org/project/youtube-search/)

Пример youtube-search:
Python
1
2
3
4
5
6
7
import json
from youtube_search import YoutubeSearch
 
results = YoutubeSearch('search terms', max_results=10).to_json()
data = json.loads(results)
 
print(data)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.09.2021, 11:55
Помогаю со студенческими работами здесь

Ошибка в запуске дискорд бота, discord.py
Сделал бота на discord.py Запускаю, а он выдает ошибку Traceback (most recent call last): File...

Как вызвать функцию дискорд бота прямо из кода, а не из чата в дискорде?
Перечитал всю документацию, но ничего не нашел по поводу того, как можно вызвать команду бота, не используя чат дискорда. То есть, у...

Дискорд бот
Здравствуйте! Решил я значит написать discord бота, и стало очень интересно что я могу общаться через бота, при помощи махинации с...

Музыкальный дискорд бот
в js практичеки не шарю, подскажите пожалуйста почему код не работает, бот запускается но на команды не реагирует код: const Discord...

Дискорд бот на javascript
Доброго времени суток! Допустим есть два сервера и на них есть одинаковая роль, мне нужно сделать так, чтобы бот увидел, что у пользователя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru