Как получить канал discord py

Поэтому я пытаюсь написать рейд-бот для моей развязки на рейде, используя библиотеку 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, недавно запустил…
Еще по теме:  Как поставить в дискорде 18 лет

Из вашего вопроса мало что можно сделать. Я считаю, что ваша проблема в том, что 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

:D

Если вы знаете идентификатор канала, вы можете сделать это таким образом. Работает для меня

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)

Еще по теме:  Warface что такое дискорд

Итак, я работаю здесь над небольшим проектом, и в значительной степени я хочу иметь одну из функций «Введите имя канала на этом сервере».

В общем, бот запрашивает имя канала, и я добавляю, например, «#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

Рейтинг
( Пока оценок нет )
Загрузка ...