Как запретить боту писать в чат 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.3.8.5973

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

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

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

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

Доступ/Запрет к команде?

Доступ и запрет к команде. Как разрешить и запретить пользователю использовать выбранную команду?
К примеру: Мне разрешено её использовать, а остальным — нет.
К тому же, как сделать удаление команды ботом, после её же написания?
Пример: я написала команду, после чего бот отправил сообщение, а команду удалил.

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

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

Не могу получать ответ в авторизации через python?

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

Часто задаваемые вопросы#

Заикается/отключается музыка или радио. Что делать?#

У данной проблемы может быть несколько причин:

  • Высокая нагруженность музыкального сервера: Степень нагрузки отображается в панели воспроизведения в самом дискорде и на странице Статистики. Если нагрузка менее 80%, проблема не в этом.
  • Проблемы с соединением до голосового шлюза Discord или его высокая нагруженность: Между Вами и ботом есть узел, называемый голосовым шлюзом. У Discord их несколько и каждый привязан к выбранному в настройках голосового канала Региону. Проблемы могут быть как между шлюзом и ботом, так и между Вами и этим шлюзом. Пробуйте менять регион голосового канала и смотреть будут ли улучшения на каком-нибудь из них (полностью перезапуская при этом воспроизведение музыки).
  • Проблемы с соединением бота до источника музыки: По независимым от нас причинам имеют место быть проблемы с соединением до источника музыки (SoundCloud, Яндекс.Музыка, радиостанции) когда сам источник музыки тормозит или нестабильное соединение до него. Проблема может нести как временный, так и постоянный характер и преимущественно для радиостанций. К сожалению, мы не компания с огромным бюджетом и не можем иметь по музыкальному серверу в каждой точке мира, чтобы обеспечивать стабильное соединение ко всему что только возможно. Если это происходит, пробуйте менять радиостанцию, воспользоваться SoundCloud вместо Яндекс.Музыки или наоборот.

Какие разрешения необходимы для доступа к панели управления ботом?#

Доступ к панели управления ботом могут получить только владелец сервера и администраторы (пользователи, у которых есть роль с правом «Администратор»).

Будьте внимательны, так как участник с этими правами способен изменить любой параметр в панели управления. Он сможет даже получить роли выше собственных при желании.

Что за печеньки в рангах, профиле участника, странице рейтинга?#

Просто счетчик, карма, система репутации. Чтобы повысить этот счетчик, можно:

  1. Написать сообщение с обращением к участнику и эмоцией печеньки ��, например: @JuniperBot :cookie:
  2. Добавить реакцию �� к сообщению этого участника.

Один участник другому может дать �� только раз в 10 минут.

Что такое кластер и звено?#

Звено — часть JuniperBot, которая отвечает за обработку определённого набора серверов;
Кластер — физический сервер, который отвечает за обработку определённых звеньев.

Можно ли воспроизвести сохраненный ранее плейлист бота и как это сделать?#

Для поддержавших есть такая возможность, можно просто передать ссылку на плейлист командой !плей :

!плей https://juniper.bot/playlist/99eb328f-d970-4265-ae6f-07c1d7ac8682 

Ссылки на плейлист всегда отображаются в сообщениях о воспроизведении после нажатия кнопки сохранения плейлиста.

Будет ли функционал экономики?#

Не будет. Совсем. Никак. Никогда. Используйте наш шаблонный движок, и сделайте нужный вам функционал сами.

Будет ли поддержка плейлистов и музыки ВКонтакте?#

Нет. Скажите спасибо жадным копирастам, из-за которых ВКонтакте закрыл публичный доступ к инструментарию музыки.

Как рассчитать количество опыта на тот или иной уровень?#

Как настроить экспорт постов из группы ВКонтакте, уведомления о новых видео от YouTube каналов или оповещение о начале трансляции на Twitch?#

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

Как ограничить использование команды по роли или в каналах?#

Изучите статью Пользовательские команды. Настройки прав доступа применимы и для встроенных команд.

Бот не выдаёт начальную роль и/или не отправляет приветственное сообщение.#

У данной проблемы может быть несколько причин:

  • Вы проверяете это на боте. Джунипер не выдаёт начальную роль и не пишет приветственное сообщение ботам;
  • У бота нет прав на изменение ролей участников;
  • Начальная роль выше роли бота, из-за чего бот не может выдать её согласно иерархии;
  • Проблемная начальная роль также назначена как роль мьюта в настройках модерации (бот выдаст роль мьюта только если участник был замьючен);
  • На сервере включен «Отбор участников» (Membership Screening) и участник не согласился с правилами Вашего сервера.

Бот не выдаёт/снимает роли.#

У данной проблемы может быть несколько причин:

  • Баг клиента дискорда. На деле бот снял роль и в аудите дискорда это можно проверить. Чтобы роли участника обновились нужно перезапустить его (Ctrl + R).
  • У бота нет прав на изменение ролей участников;
  • Начальная роль выше роли бота из-за чего бот не может её выдать по иерархии.

Информационные сообщения о мьюте/бане/кике/преде участника удаляются через некоторое время. Как это отключить?#

В панели управления в разделе «Общие» в настройках сообщений есть опция «Удалять сообщения об успешных операциях». Введите туда 0 если хотите, чтобы эти сообщения не удалялись.

На каком языке программирования написан бот?#

Бот написан на Kotlin и Java.

У меня есть идея. Где я могу её предложить?#

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

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

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