Поэтому я пытаюсь написать рейд-бот для моей развязки на рейде, используя библиотеку discord.py в python. Предполагается, что эти сценарии формируют список участников голосового канала для рейдов. По какой-то причине этот скрипт не работает. Всякий раз, когда печатаются сообщения, он просто печатает пустой список.
Если кто-то знаком с discord.py и может сказать мне, почему это не работает, пожалуйста. Меня это очень беспокоит, и я испробовал все, что было в моих силах, чтобы исправить это.
#find raiding
voice_channel = discord.utils.get(ctx.message.server.channels, )
#finds the members
members = voice_channel.voice_members
memids = []
for member in members:
memids.append(member.id)
print(memids)
спросил(а) 2018-04-29T09:33:00+03:00 5 лет, 1 месяц назад
Источник: progi.pro
How to create a !giveaway in your discord server with #python #discordpy
Получить название канала с помощью discord.py
как мне получить имя канала, чтобы этот бот работал на любом сервере, на котором он установлен, без каких-либо изменений в коде? (в коде, где я поставил «что я сюда положил», это то место, где я хочу, чтобы имя было в переменной) Спасибо
Комментарии (2)
Вы пытаетесь получить объект Channel , хотя все, что вы знаете, — это его имя? Как вы выбираете, на каком сервере хотите отправлять сообщения? У вас есть идентификатор этого канала?
Я хочу отправить его на основной канал всех серверов, на которых работает бот, поэтому у меня нет идентификаторов. в идеале он будет искать канал с названием «общий» или «основной канал».
Источник: reddeveloper.ru
Как получить канал discord py
Поэтому я пытаюсь написать рейдовый бот для моего рейдового диссонанса, используя библиотеку discord.py в python. Предполагается, что этот сценарий формирует список участников в голосовом канале для рейдерства. По какой-то причине этот скрипт не работает. Всякий раз, когда memids печатается, он просто печатает пустой список.
Если кто-то знаком с discord.py и может сказать мне, почему это не работает, пожалуйста, сделайте это. Это действительно беспокоит меня, и я испробовал все, что знал, чтобы исправить это.
#find raiding voice_channel = discord.utils.get(ctx.message.server.channels, ) #finds the members members = voice_channel.voice_members memids = [] for member in members: memids.append(member.id) print(memids)
29 апреля 2018 в 06:33
3 ответа
- Как бы я преобразовал свой код discord.py discord bots, который я использую для получения списка участников в голосовом канале, в новую версию discord.py? У меня есть команда, которая создает список участников в определенном голосовом канале. Например !посещаемость general для голосового канала general. Моя проблема заключается в том, что некоторые части больше не работают, так как я использовал более старую версию discord.py.I, недавно запустил…
Из вашего вопроса мало что можно сделать. Я считаю, что ваша проблема в том, что id , который вы предоставили utils.get(. ) , не является правильным идентификатором голосового канала. Вероятно, именно по этой причине вы всегда получаете пустой список.
How to create a hybrid Discord bot? (discord.py)
voice_members
Список Members , которые в данный момент находятся внутри этого голосового
канала. Если type не является ChannelType.voice , то это всегда пустой
массив .
Если вы не полностью уверены в фактическом id голосового канала , я предлагаю вам выполнить поиск по имени и типу ( discord.ChannelType.voice ):
voice_channel = discord.utils.get(ctx.message.server.channels, name=»channelname», type=discord.ChannelType.voice)
29 апреля 2018 в 06:57

Если вы знаете идентификатор канала, вы можете сделать это таким образом. Работает для меня
channel = client.get_channel(1234567890) #gets the channel you want to get the list from members = channel.members #finds members connected to the channel memids = [] #(list) for member in members: memids.append(member.id) print(memids) #print info
30 августа 2020 в 22:38
Если вы знаете идентификатор канала, я предлагаю использовать
voice_channel = client.get_channel(channel_id)
вместо этого ( документация здесь ). Если вы используете discord.py-rewrite , вы также можете использовать:
voice_client = ctx.guild.get_channel(channel_id)
если канал, который вы ищете, находится в контексте гильдии ( документация здесь ).
30 апреля 2019 в 09:47
Похожие вопросы:
Отображение всех пользователей в канале Discord
Прямо сейчас я работаю над ботом Discord и пытаюсь перечислить всех пользователей, которые в данный момент подключены к голосовому каналу general. Моя главная проблема сейчас заключается в том, что…
Как бы я сделал бота, который подсчитывает, сколько имен людей начинается с ‘5’ в голосовом канале (discord.py)
Могу ли я проверить, есть ли пользователь в голосовом канале?
При повороте переводчика английский может показаться неестественным. Если на голосовом канале нет пользователей, программа выйдет из строя. Поэтому я хотел бы проверить, есть ли пользователи на…
Как бы я преобразовал свой код discord.py discord bots, который я использую для получения списка участников в голосовом канале, в новую версию discord.py?
У меня есть команда, которая создает список участников в определенном голосовом канале. Например !посещаемость general для голосового канала general. Моя проблема заключается в том, что некоторые…
Пусть бот упомянет всех пользователей в голосовом канале Discord
Как я могу увидеть список участников в канале?
Несколько действий в Microsoft Teams повлияют на всех участников конкретного канала, и я хотел бы знать, с какими людьми можно связаться (например, пометить канал, назначить встречу в канале). Как я…
Как отправить личное сообщение участникам определенной роли не в голосовом канале?
Это код, который я использую для подсчета участников с определенной ролью, находящихся в голосовом канале. Я хочу отправить личное сообщение участникам с этой ролью, а не по голосовому каналу. Как я…
Дискорд-бот: Как воспроизвести файл mp3 в голосовом канале
Прежде всего: да, я провел исследования в Google, форумах, серверах discord и т. д., Но ни один из них не подходит для того, что я хочу сделать. Я говорю это, чтобы никто не оскорблял меня словесно…
Сделайте так, чтобы бот отключился, если он один в голосовом канале discord.py
Есть ли способ отключить бота, если он один на голосовом канале? Есть ли какое-либо событие, которое срабатывает каждый раз, когда человек покидает ВК или что-то подобное, что могло бы сделать эту…
Получение списка участников в канале discord.py rewrite
Резюме Я действительно Новичок в discord.py и пытаюсь понять, как получить список людей в канале сервера discord. Я работаю над командой, которая случайным образом разделит канал на два разных…
Предполагая, что вы используете ветвь асинхронной, то Client класс содержит servers , которые возвращают список Server классов, что бот подключен. Документация здесь: http://discordpy.readthedocs.io/en/latest/api.html#discord.Client.servers
Перебор в этом списке, каждый Server класса содержит channels , которые возвращает список Channel классов, которые сервер имеет. Документация здесь: http://discordpy.readthedocs.io/en/latest/api.html#discord.Server.channels
Наконец, повторяя этот список, вы можете проверить каждый класс Channel для разных свойств. Например, если вы хотите проверить, что канал является текстом, вы должны использовать channel.type . Документация здесь: http://discordpy.readthedocs.io/en/latest/api.html#discord.Channel
Примерный пример того, как вы можете составить список всех объектов Channel с типом «Текст»:
text_channel_list = []
for server in Client.servers:
for channel in server.channels:
if channel.type == ‘Text’:
text_channel_list.append(channel)
Итак, я работаю здесь над небольшим проектом, и в значительной степени я хочу иметь одну из функций «Введите имя канала на этом сервере».
В общем, бот запрашивает имя канала, и я добавляю, например, «#changelog» — а затем он спрашивает, что ему следует писать в этом канале и т. Д. И т. Д. Так что нужно получить идентификатор канала (я предположение), но я не хочу, чтобы пользователи писали идентификатор, вместо этого записывали только # имя-сервера. И когда я это сделаю, бот будет писать в этом канале.
Вот мой текущий код!
Изменить: идентификатор канала должен быть сохранен «навсегда», а это означает, что мне не нужно переписывать имя канала, на котором должно идти сообщение!
27 Сен 2020 в 01:43
2 ответа
Вы можете использовать discord.utils.get() в этом примере:
text_channel = await self.client.wait_for(«message», check=lambda message: message.author == ctx.author, timeout=300) channel = discord.utils.get(ctx.guild.text_channels, name=text_channel) await channel.send(‘Bla Bla’)
Поэтому, когда вы вводите (prefix)clhook , тогда только название канала, например общий , он отправляет Bla Bla на канал с именем общий .
Есть другой способ сделать это, и я думаю, он проще, чем первый вариант, вот он:
Итак, в этой команде изменено использование. Вы можете использовать это с этим: (prefix)clhook #general(mention the channel) . Я предлагаю это решение и считаю его более полезным.
Nurqm
26 Сен 2020 в 23:14
Вы можете использовать message.channel_mentions . Это вернет list всех каналов, которые были упомянуты в нотации #channel-name . Таким образом, вы можете просто использовать channel.id , чтобы получить id канала, который они упомянули.
Однако не забудьте проверить, действительно ли пользователь сделал тег для канала (который вы также можете добавить в свой check ). Я поместил его в отдельную функцию, чтобы сделать его более читаемым для этого ответа, но вы можете поместить это в свою лямбду, если действительно хотите.
Также убедитесь, что это Text Channel , а не Voice Channel или Category Channel .
Я поставил два условия в строке mentioned_channel , потому что если первое не сработает, второе может вызвать IndexError. В качестве альтернативы вы также можете использовать if-statement , чтобы быстрее вернуться в это место и решить ту же проблему.
stijndcl
26 Сен 2020 в 23:09
Источник: kak24.ru