Можно ли сделать запрет для бота, писать только в отдельном канале? 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,302 1 1 золотой знак 4 4 серебряных знака 11 11 бронзовых знаков
- discord
- бот
- discord.py
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Доступ/Запрет к команде?
Доступ и запрет к команде. Как разрешить и запретить пользователю использовать выбранную команду?
К примеру: Мне разрешено её использовать, а остальным — нет.
К тому же, как сделать удаление команды ботом, после её же написания?
Пример: я написала команду, после чего бот отправил сообщение, а команду удалил.
- Вопрос задан более трёх лет назад
- 2959 просмотров
Комментировать
Решения вопроса 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
- +1 ещё
Как заставить селениум просто открыть страницу и ждать?
- 1 подписчик
- 51 минуту назад
- 114 просмотров
Как запретить отвечать боту в личных сообщениях?
Хочу сделать так, чтобы только бот мог писать участнику сервера, а сам участник сервер — нет. Т.е. бот не реагировал на команды в личных сообщениях, только на сервере. Как это можно сделать?
- Вопрос задан более двух лет назад
- 981 просмотр
Комментировать
Решения вопроса 1

Добавьте проверку на выполнение команды в ЛС.
@bot.check async def global_guild_only(ctx): if not ctx.guild: raise commands.NoPrivateMessage # replicating guild_only check: https://github.com/Rapptz/discord.py/blob/42a538edda79f92a26afe0ac902b45c1ea20154d/discord/ext/commands/core.py#L1832-L1846 return True
@bot.command() @commands.guild_only() async def cmd(ctx, . ): """Here we go. """ .
Ответ написан более двух лет назад
Нравится 2 2 комментария
Dream @dreameddd Автор вопроса
А можно сделать исключения на необходимые мне команды? Используя global_guild_only (задался этим вопросом только сейчас)

Dream, проверяйте на наличие название команды в списке:
if ctx.command.name in ["cmd", "cmdtoo", . ]: raise commands.NoPrivateMessage
Как запретить другим писать в канале Discord
Discord является очень популярным мессенджером. Его активно используют геймеры для того, чтобы общаться друг с другом. Среди множества функций Дискорд есть возможность создавать различные каналы, распределяя участников по интересам. При большом количестве игроков нередко возникают ситуации троллинга и хейта. В этой статье описан вариант устранения данной проблемы. Здесь вы найдете описание того, как в Дискорде запретить писать в канале. Эта опция ограждает людей от негативного общения.

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

Блокировка участника
Это действенный способ отстранения конкретного участника от чата. Что нужно сделать:
- Нажмите на аватар собеседника;
- Нажмите на три вертикальные точки справа;
- Выберите пункт «Заблокировать».
Можно не блокировать участника полностью, а отправить его в бан. Необходимо выполнить все указанные выше действия, но вместо кнопки «Заблокировать» выбрать пункт «Забанить». Пи этом есть возможность выбора времени бана.

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

Запрет на отправку голосовых сообщений в Discord
Участники сервера могут общаться не только в текстовом чате, но и отправлять друг другу голосовые послания. Здесь также могут возникать конфликтные ситуации и происходить нежелательные действия. Для запрета участникам говорить в таком чате, необходимо сделать следующее:
- Выберите нужный канал;
- Нажмите на пункт «Настройки»;
- Выберите пункт «Подключаться»;
- Сделайте его неактивным.

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