Как я могу впустить своего бота discord.py отвечать конкретным пользователям?

#python #discord #discord.py

Вопрос:

Как я могу впустить своего бота discord.py отвечать конкретным пользователям? Я пытался:

if ctx.message.author.id == [740936250608844890, 483686172221243402]:

и попытался использовать файл config.yml, так как это:

if ctx.message.author.id == config['Whitelist']:

и в файле конфигурации есть это:

Whitelist: [483686172221243402, 740936250608844890]

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

Комментарии:

1. Возможно, вы можете поместить всех пользователей в текстовый файл. Или, может быть, список в верхней части кода, к которому может получить доступ этот оператор if.

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

3. @Goion Я попытался составить список на config.yml и не получилось:(

4. Где я сказал изменить config.yml ? Я понятия не имею, что ты делаешь, я не могу тебе помочь. Я дал тебе несколько вариантов. Попробуйте их все.

5. @Goion как я могу использовать текстовый файл, можете ли вы ввести, что я должен ввести в текстовый файл? и как его использовать в main.py?

Ответ №1:

Как сказано в комментариях, существует множество способов достижения того, чего вы хотите. В выбранном вами способе ошибка кроется в == операторе, который следует заменить in .

Это должно выглядеть так:

 if ctx.message.author.id in [740936250608844890, 483686172221243402]:
 

Редактировать:

Если вы хотите сохранить идентификаторы в отдельном файле, вы можете сделать следующее:

 with open("ids.txt") as ids_file: # In 'ids.txt' write one id per line
    if srt(ctx.message.author.id) in ids_file.read():
        # do something
 

Ответ №2:

Итак, я вижу, что вы хотите, чтобы эта команда предназначалась только для пользователей с этими идентификаторами. Так что это довольно просто, вам просто нужно использовать циклы for для перебора списка, а затем проверить это.

Шаг за шагом давайте заставим вас понять.

  1. Создайте список с идентификаторами пользователей:
    вот список тех пользователей, которые могут использовать команду, и больше никого.
 special_users = [740936250608844890, 483686172221243402]
 
  1. Создание for цикла, который повторяет список:
    Итак, теперь мы напишем цикл for, который предоставит нам итерацию, в ходе которой мы будем просматривать идентификаторы пользователей один за другим и возвращать из него значения.
 for user in special_users:
    # Step 3 for code
 
  1. Добавление оператора if внутри цикла for:
    Теперь мы добавим if оператор, который будет использовать user то, что мы определили в цикле, и проверим идентификатор.
 if message.author.id == user:
   # Perform the function you want to.
   # Write the code you want here.
 

Мы закончили. В основном это было так просто, и если бы я не объединил все эти части, это было бы так:

 special_users = [740936250608844890, 483686172221243402]
for user in special_users:
    if message.author.id == user:
       # Perform the function you want to.
       # Write the code you want here.
 

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

Спасибо! 😀