Можно ли сделать запрет для бота, писать только в отдельном канале? discord.py
Я делаю бота для дискорд с помощью discord.py, и хочу сделать ему запрет отвечать на команды во всех каналах кроме тех которые я укажу. У меня есть небольшой код, но его приходиться писать в каждой команде, а ето не удобно. Можно ли сделать такой запрет, или может можно сделать мой код сразу для всех команд? Вот мой код:
channell = ctx.message.channel channel1 = client.get_channel(929090952763703316) if channell != channel1: await ctx.send("Тут нельзя!") await ctx.channel.purge(limit = 1) else:
Отслеживать
задан 8 янв 2022 в 11:48
3 1 1 бронзовый знак
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Можно сделать как декоратор:
def predicate(ctx: commands.Context): channel = nextcord.utils.get(ctx.guild.text_channels, ) if ctx.channel != channel: return False else: return True has_channel = commands.check(predicate) @commands.command() @has_channel async def test(self, ctx): pass
Можете ещё добавить обработчик ошибок
Отслеживать
ответ дан 8 янв 2022 в 12:31
2,287 1 1 золотой знак 4 4 серебряных знака 10 10 бронзовых знаков
- discord
- бот
- discord.py
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.21.1314
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Доступ/Запрет к команде?
Доступ и запрет к команде. Как разрешить и запретить пользователю использовать выбранную команду?
К примеру: Мне разрешено её использовать, а остальным — нет.
К тому же, как сделать удаление команды ботом, после её же написания?
Пример: я написала команду, после чего бот отправил сообщение, а команду удалил.
- Вопрос задан более трёх лет назад
- 2930 просмотров
Комментировать
Решения вопроса 1
Igromik @IgromikBot
Говнокодер
@Client.command(pass_context=True) @commands.has_permissions(manage_messages=True) async def ping(ctx): await ctx.message.delete() await ctx.send('Pong!')
Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Ответы на вопрос 4
alekssamos @alekssamos
Программист любитель
if chat_id != admin_id: return False # только для админа
А удаление обычно MessageDelete Если там подобное есть.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать

Web devoloper
Доступ и запрет к команде. Как разрешить и запретить пользователю использовать выбранную команду?
К примеру: Мне разрешено её использовать, а остальным — нет.
Добавить условие, где chat.id == ‘123456789’, где ‘123456789’ — это ваш чат айди.
if (total_say_ban > 0.80) and message.chat.id == 441945234: user_name = message.text.split('@')[1].strip() print(total_say_ban) # Бан пользователя> conn = sqlite3.connect("users.db") cursor = conn.cursor() # Находим ублюдка по его username, меняем значение rules на False sql = """ UPDATE white_list SET rules = 'False' WHERE user_name=? """ cursor.execute(sql, [user_name]) fetch_id = cursor.fetchone() conn.commit() bot.send_message(user_id, f"Пользователь @ забанен.")
В моём примере, только я могу забанить пользователя. Или только определенная группа модераторов (добавив к условию их айдишники). Ну или назначать через бота, написав соответствующий функционал)
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
@client.command() @commands.has_any_role( ID, ID, ID ) # ID роли, можно хоть сколько, можно хоть один async def mute( ctx, member:discord.Member,time:int, * ,reason ):
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Python/JS coder
Используй декораторы
@bot.command() @commands.has_role(id_role) #id роли которой будет доступна эта команда async def command(ctx): await ctx.message.delete() #делаешь что-то
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Python
- +2 ещё
TypeError: event_list() missing 1 required positional argument: ‘call_data» aiogram при использовании CallbackFactory?
- 1 подписчик
- 2 часа назад
- 4 просмотра
Как в Discord запретить другим людям писать в чат
Мессенджер Discord, устанавливается как приложение на смартфон, или используется через веб-ресурс. Здесь можно создавать текстовые каналы с большой аудиторией, и вести личную переписку. В беседах могут появляться хейтеры, троллящие вас. Однако, используя специальные настройки, вы сможете контролировать данную ситуацию, и не допустить общения с нежелательным собеседником. Расскажем, как запретить писать в чат в Дискорд.

Как запретить писать в чат в Discord блокировкой собеседника
Текстовые каналы в месенджеры созданы для обмена сообщениями, видео и картинками. Вы можете отсеять нежелательных собеседников разными способами:
- Заблокировать.
- Установить выборочный запрет.
- Настроить переписку.

Начнем с отсева нежелательных собеседников способом блокировки. Для этого придерживайтесь простой инструкции:
- Кликните на иконку пользователя, которого будете блокировать.
- Нажмите на кнопку в виде трех точек.
- Будет вызвано контекстное меню.
- В нем выберите пункт «Заблокировать».
Также вы можете установить запрет на отправку сообщений не всем пользователям в текстовом канале, а только выборочно. Для этого используйте клик по никнейму пользователя, и снова вызов контекстного меню. В списке опций установите запрет на отправку сообщений. Здесь же модно поставить блок на то, чтобы он не мог видеть отправления других участников.

Бан можно установить на определенное время, необязательно это делать как постоянный запрет. В этом случае примените следующий алгоритм:
- Наведите курсор на никнейм пользователя.
- Выберите вариант блокировки.
- Установите временной отрезок для бана.
- Нажмите кнопку «Запустить».
Обратите внимание! Вы можете выбрать варианты блокировки отправки вам сообщений как постоянно, так и установить бан на конкретный временной промежуток.

Дополнительный способ запретить писать в чат Дискорда
В текстовом чате вы можете использовать специальные настройки, которые позволяют ставить некоторые фильтры. Чтобы ими воспользоваться, придерживайтесь следующего алгоритма:
- Под списком собеседником находится кнопка в виде шестеренки, нажмите на нее.
- Откроется окно «Конфиденциальность».
- Можно выбрать пункт «Разрешить личные сообщения от участников сервера», переведя бегунок в положение «Отключено».
- Дополнительно воспользуйтесь маркером напротив пункта «Оберегайте меня».
- Завершив настройки, нажмите на значок крестика в правом верхнем углу.

Описанный метод отключить прием сообщений в личной переписке ото всех кто является участником вашего сервера. При этом в общем канале возможность переписки сохранится. Если же вы желаете, чтобы кто-то из общего чата мог написать вам в личку, то просто добавьте его в друзья.
Все нужные нам параметры собраны в меню «Настройки пользователя». Оно откроется если нажать на шестеренку рядом с именем пользователя. Имеющийся здесь фильтр содержимого, однако, не спасет при цензуре текста. Он создан для ограничений по отправке изображений и видео. Реально отфильтровать ненормативную лексику поможет приобретение бота, который наделен функцией фильтрации по словам.
Частые вопросы:
- Как в Discord сделать правила на сервере
- Как в Discord поставить статус «Играет в игру»
- Как в Discord включить музыку через бота-помощника
- Как в Discord обойти бан на сервере
Как удалить бота с сервера в Discord

Бот – неотъемлемая часть практически любого сервера в Дискорде, но не все из них надолго задерживаются, например, если после установки пользователь понял, что его не устраивает функциональность данной утилиты. Тогда возникает надобность удалить бота, чтобы он больше не работал на этом проекте.
Я покажу, как это можно сделать в несколько кликов.
Полное удаление бота с сервера Discord
Сначала будет информация для тех пользователей, кто заинтересован в бесповоротном и окончательном удалении бота со своего сервера (ликвидировать бота может только создатель или тот пользователь, чья роль предусматривает управление другими участниками). Собственно, удаление бота осуществляется точно так же, как и любых других участников:
- Найдите бота в списке по его названию или специальному маркеру «Бот» справа. Щелкните по нему правой кнопкой мыши.

- Из появившегося контекстного меню выберите пункт «Выгнать…». Вы видите, что эта строка подсвечена красным, значит, отображается только у пользователей с соответствующей привилегией.

- Причину удаления можно не указывать, бот вряд ли ее прочитает, поэтому просто кликните по «Выгнать».

- На всякий случай просмотрите список участников и убедитесь в отсутствии ненужного бота.

- Можете даже удалить все его сообщения, если так хочется. Для этого вызовите меню, щелкнув по кнопке с тремя точками, и активируйте соответствующую опцию.

Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Временное отстранение бота
Еще через то же самое контекстное меню боту можно выдать тайм-аут, то есть временно ограничить ему отправку сообщений и подключение к каналам. В том случае, когда юзер попробует обратиться к боту, он просто ему не ответит, как и не отправит личное сообщение при вступлении на сервер или выполнении любого другого действия, подразумевающего личную рассылку.
![]()
Вам нужно только выбрать срок тайм-аута, а причину, как и при удалении, можно не указывать. Как только срок заглушки закончится, бот вернется к выполнению своих прямых обязательств и сможет взаимодействовать с пользователями.
![]()
Ограничение действий для бота
Вкратце расскажу о том, что делать пользователям, которым сам бот еще может пригодиться, но сейчас нужно ограничить его работу частично или полностью без отправки в тайм-аут. В этом поможет настройка его роли, которая создается автоматически при добавлении бота. Вы сможете ограничить любые действия и вернуть настройки, когда посчитаете это нужным.
- Разверните меню сервера и перейдите в настройки.

- Через панель слева откройте список ролей и выберите роль с названием целевого бота.

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

- Для этого перейдите на вкладку «Права доступа» и отключите все пункты, которые хотите. Например, можете запретить боту отправлять сообщения или подключаться к голосовым каналам. Последнее будет полезно для музыкальных ботов, работу которых нужно приостановить.

- В очень редких случаях, я лично такое не встречал, боты имеют права администратора, разрешающие обходить все остальные ограничения. Лучше вообще не использовать таких ботов, ну и не забудьте проверить это расширенное право и отключить его тоже.

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