Создание 100 групп программно с помощью Python

Я обратился к боту GPT, и он, вероятно, был близок к решению, но я новичок и хотел бы получить умные советы, прежде чем что-то сломать.

У меня есть список из 100 названий групп (они могут быть разделены запятыми, находиться в файле или в любом другом формате).

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

Разрешить пользователям свободно вступать в группу (требуется публично видимая группа)
Разрешить пользователям свободно покидать группу
–без автоматического добавления участников–

и

Следующее от бота кажется началом, но я не очень комфортно чувствую себя, пытаясь разобраться в этом самостоятельно:

GPT ГОВОРИТ:

Однако вы можете использовать API Discourse для программного создания групп. Это потребует некоторых технических знаний и знакомства с API.

Вот базовый пример того, как это можно сделать на Python с использованием библиотеки requests:

import requests

api_key = 'ваш_api_ключ'
api_username = 'ваш_имя_пользователя_api'
base_url = 'https://ваш_url_discourse.com'

headers = {
    'Api-Key': api_key,
    'Api-Username': api_username,
}

for i in range(1, 101):
    data = {
        'name': f'group_{i}',
        'visible': True,
        'automatic_membership_email_domains': 'example.com'
    }
    response = requests.post(f'{base_url}/admin/groups', headers=headers, data=data)
    print(f'Создана группа {i}, код ответа: {response.status_code}')

Замените 'ваш_api_ключ', 'ваш_имя_пользователя_api' и 'https://ваш_url_discourse.com' на ваш реальный API-ключ, имя пользователя API и URL Discourse.

СПАСИБО.

Выглядит в основном верно.

Однако проверьте, работает ли это для одного или двух элементов, прежде чем перебирать сотню!

Вы можете ознакомиться со статьей Реверс-инжиниринг API Discourse, чтобы убедиться, что вы получаете все настройки вашей группы так, как вам нужно.

Также см. Use the Discourse API ruby gem

Что-то вроде этого:

group_names.each do |name|
  begin
  response = client.create_group(name: name,
    visibility_level: 0,
    members_visibility_level: 0,
    mentionable_level: 3,
    messageable_level: 3,
    public_exit: true,
    public_admission: true
  )
  group_id = response["basic_group"]["id"]
  group_name =response["basic_group"]["name"]
  puts "Создана группа #{group_name}(#{group_id})"
  sleep 1
rescue => e
  puts "Ой. Возникла проблема с #{name}: #{e}"
  sleep 1
end