Перейти к содержимому

Как запретить боту писать в чат discord

  • автор:

Можно ли сделать запрет для бота, писать только в отдельном канале? 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

IgromikBot

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 Если там подобное есть.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать

sabolch

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

  • Python
  • +1 ещё

Как заставить селениум просто открыть страницу и ждать?

  • 1 подписчик
  • 51 минуту назад
  • 114 просмотров

Как запретить отвечать боту в личных сообщениях?

Хочу сделать так, чтобы только бот мог писать участнику сервера, а сам участник сервер — нет. Т.е. бот не реагировал на команды в личных сообщениях, только на сервере. Как это можно сделать?

  • Вопрос задан более двух лет назад
  • 981 просмотр

Комментировать
Решения вопроса 1

fixator10

Добавьте проверку на выполнение команды в ЛС.

@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 (задался этим вопросом только сейчас)

fixator10

Dream, проверяйте на наличие название команды в списке:

if ctx.command.name in ["cmd", "cmdtoo", . ]: raise commands.NoPrivateMessage

Как запретить другим писать в канале Discord

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

как в дискорде запретить писать в канале

Как в Дискорде запретить писать в канале: алгоритм действий

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

  • Войдите в меню аккаунта;
  • Выберите пункт «Отключить отправку личных сообщений».

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

как запретить писать на канале в дискорде

Блокировка участника

Это действенный способ отстранения конкретного участника от чата. Что нужно сделать:

  • Нажмите на аватар собеседника;
  • Нажмите на три вертикальные точки справа;
  • Выберите пункт «Заблокировать».

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

как в дискорде запретить доступ на канале в дискорде

Ограничение прав пользователя

Запрет на отправку сообщений можно выполнить посредством настройки ролей. Для этого необходимо выполнить такие действия:

  • Нажмите на название сервера;
  • Выберите нужный канал;
  • Нажмите значок «Настройки»;
  • Выберите раздел «Права доступа»;
  • Настройте разрешение для конкретной роли.

как запретить писать в чат в дискорд в текстовом канале

Запрет на отправку голосовых сообщений в Discord

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

  • Выберите нужный канал;
  • Нажмите на пункт «Настройки»;
  • Выберите пункт «Подключаться»;
  • Сделайте его неактивным.

как запретить писать и говорить на канале в discord

Это вариант отключения голосовых сообщений для всех участников канала. Сделать подобное ограничение можно для конкретного человека, нажав на его никнейм и отключив его от общего чата.

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

Частые вопросы:

  • Как в Discord запретить другим людям писать в чат
  • Как в Discord использовать телефон в качестве микрофона
  • Что такое Дискорд Онлайн, и как им пользоваться
  • Как сделать бота, выдающего роли в Discord

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *