#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 для перебора списка, а затем проверить это.
Шаг за шагом давайте заставим вас понять.
- Создайте список с идентификаторами пользователей:
вот список тех пользователей, которые могут использовать команду, и больше никого.
special_users = [740936250608844890, 483686172221243402]
- Создание
for
цикла, который повторяет список:
Итак, теперь мы напишем цикл for, который предоставит нам итерацию, в ходе которой мы будем просматривать идентификаторы пользователей один за другим и возвращать из него значения.
for user in special_users:
# Step 3 for code
- Добавление оператора 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.
Надеюсь, вы понимаете, и я мог бы помочь. Все еще есть какие-то проблемы? Прокомментируйте ниже и дайте мне знать.
Спасибо! 😀