Как запретить боту писать в чат discord
Перейти к содержимому

Как запретить боту писать в чат 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 золотой знак 5 5 серебряных знаков 11 11 бронзовых знаков

  • discord
  • бот
  • discord.py
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.30.4069

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

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

Как установить Windows 10

Всем привет! Сегодня поговорим про то как запретить писать и говорить на канале в популярной бесплатной программе общения Discord. Итак, поехали!

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

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

Запрещение свежих извещений на текстовом канале

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

Войти в ключевое окно аккаунта;

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

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

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

Иной вариант – заблокировать. Дабы это реализовать нужно:

Кликнуть по иконке собеседника, которого надо заблокировать;

Надавить на кнопку, которая смотрится как 3 горизонтальных точки в ряд;

Из показавшегося окнаизбрать функцию – «заблокировать».

В Дискорде возможно рулить запросами в приятели. Нужно:

Избрать место: «настройки пользователя»;

Кликнуть раздел «конфиденциальность»;

Из показавшихся разновидностей реализовать выбор.

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

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

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

Возможно запретить строчить в канале дискорд не всем юзерам в чат, а лишь только выборочно.

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

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

Кликнуть по никнейму;

Показать время блокировки;

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

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

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

Войти в настройки;

И избрать место с заглавием «подключаться» и выключить его.

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

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

Запретить болтать в канале Дискорда нетрудно. Это имеют все шансы устроить админ или модер канала, выучив надлежащие памятке и выполнив воздействия, описанные повыше.

Дискорд действенное средство общения меж членами совместного чата, коих имеет возможность быть большое количество.

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

Как запретить боту некоторые команды в группах?

Есть бот, он в группе, если написать команду в этой группе, то бот выполнит её, а я хочу так, чтобы некоторые команды не были доступны в чате, а только если напишешь боту.

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

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

В объекте Message есть поле chat которое хранит объект Chat и уже в нём есть тип чата(type): «group», «supergroup», «channel», «private». Используя эти данные можешь написать фильтрацию команд собственноручно.
Если ты пишешь используя какую-нибудь из популярных библиотек, то в нём уже должен быть фильтр для групп.

Ответ написан более двух лет назад
Комментировать
Нравится Комментировать
Ответы на вопрос 1

Смотреть на тип чата, и если это не личный чат, то отмена. На сколько мне известно, для групп id чата отрицательное, т.е if (id < 0)

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

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

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

Комментировать
Решения вопроса 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

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

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