Pythonを使用して100個のグループをプログラムで作成する

I asked the GPT bot, and it probably came close, but I’m a novice and would love some smart insight before I break something.

I have a list of 100 group names (can be comma delimited, or a file, or whatever)

I want to import them and have them all have the same settings, as listed here:

Allow users to join the group freely (Requires publicly visible group)
Allow users to leave the group freely
–no automatic members–

and

The following from the bot seems like a start, but I’m not really comfortable hacking my way through it:

GPT SAYS:

However, you can use the Discourse API to create groups programmatically. This will require some technical knowledge and familiarity with APIs.

Here’s a basic example of how you might do this in Python using the requests library:

import requests

api_key = 'your_api_key'
api_username = 'your_api_username'
base_url = 'https://your_discourse_url.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'Created group {i}, response code: {response.status_code}')

Replace 'your_api_key', 'your_api_username', and 'https://your_discourse_url.com' with your actual API key, API username, and Discourse URL.

THANKS.

「いいね!」 3

Looks mostly true.

See if it works for one or two before you loop through a hundred, though!

You can check Reverse engineer the Discourse API to see that you get all of your group settings like you want them.

See also Use the Discourse API ruby gem

「いいね!」 8

Something like this:

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 "Created #{group_name}(#{group_id})"
  sleep 1
rescue => e
  puts "oops. Had a problem with #{name} #{e}"
  sleep 1
end

「いいね!」 4

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.