You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Added tabs for different Python modules needed for Guilded and Discord
respectively. Changed DISCORD_BOT_TOKEN and GUILDED_BOT_TOKEN to just
BOT_TOKEN for a more universal approach to access token usage. There are
different tabs everywhere else for differences between creating a bot
for Discord and Guilded, so this feels like an inconsistency.
This inconsistency was brought to my attenting by
[@bura1414](https://devforum.roblox.com/u/bura1414) from t[his devforum
post](https://devforum.roblox.com/t/robloxo-opencloud-documentation-issue/3422904).
## Checks
By submitting your pull request for review, you agree to the following:
- [x] This contribution was created in whole or in part by me, and I
have the right to submit it under the terms of this repository's open
source licenses.
- [x] I understand and agree that this contribution and a record of it
are public, maintained indefinitely, and may be redistributed under the
terms of this repository's open source licenses.
- [x] To the best of my knowledge, all proposed changes are accurate.
Copy file name to clipboardExpand all lines: content/en-us/cloud/webhooks/automate-right-to-erasure.md
+39-25Lines changed: 39 additions & 25 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -89,6 +89,7 @@ After you add the webhook, use it to configure the bot with the following steps:
89
89
</TabItem>
90
90
91
91
<TabItemlabel="Discord">
92
+
92
93
1. Navigate to the [Applications page](https://discord.com/developers/applications).
93
94
1. Create a new application and name it to `GDPR Bot`.
94
95
1. The system redirects you to the **General Information** settings of the bot. Copy and save its application ID in a secure place.
@@ -125,20 +126,33 @@ To obtain these identifiers, open the [Creations](https://create.roblox.com/dash
125
126
126
127
After you finish setting up the webhook, bot, and API key for data stores, add them to the scripts that implement the bot's automation logic. The following example uses Python 3:
127
128
128
-
1.Install Python libraries using the following commands:
129
+
1. Install Python libraries using the following commands:
129
130
130
-
```bash title="Install Libraries"
131
-
pip3 install discord
132
-
pip3 install guilded.py==1.8.0
133
-
pip3 install requests
134
-
pip3 install urllib3==1.26.6
135
-
```
131
+
<Tabs>
132
+
<TabItemlabel="Guilded">
133
+
134
+
```bash title="Install Libraries"
135
+
pip3 install guilded.py==1.8.0
136
+
pip3 install requests
137
+
pip3 install urllib3==1.26.6
138
+
```
139
+
140
+
</TabItem>
141
+
<TabItemlabel="Discord">
136
142
137
-
1. Copy and save the following scripts corresponding to different parts of the bot logic in the same directory:
143
+
```bash title="Install Libraries"
144
+
pip3 install discord
145
+
pip3 install requests
146
+
pip3 install urllib3==1.26.6
147
+
```
148
+
149
+
</TabItem>
150
+
</Tabs>
151
+
152
+
1. Copy and save the following scripts corresponding to different parts of the bot logic in the same directory:
138
153
139
154
```python title="bot_config.py"
140
-
DISCORD_BOT_TOKEN = ""
141
-
GUILDED_BOT_TOKEN = ""
155
+
BOT_TOKEN=""
142
156
OPEN_CLOUD_API_KEY=""
143
157
ROBLOX_WEBHOOK_SECRET=""
144
158
@@ -237,7 +251,6 @@ After you finish setting up the webhook, bot, and API key for data stores, add t
@@ -369,7 +382,7 @@ After you finish setting up the webhook, bot, and API key for data stores, add t
369
382
await message.reply(f"Failed to delete ordered data stores data for "+
370
383
f"user ID: {user_id}, data: {dict(failures)}")
371
384
372
-
client.run(bot_config.GUILDED_BOT_TOKEN)
385
+
client.run(bot_config.BOT_TOKEN)
373
386
374
387
if__name__=="__main__":
375
388
run()
@@ -422,7 +435,7 @@ After you finish setting up the webhook, bot, and API key for data stores, add t
422
435
await message.reply(f"Failed to delete ordered data stores data for "+
423
436
f"user ID: {user_id}, data: {dict(failures)}")
424
437
425
-
client.run(bot_config.DISCORD_BOT_TOKEN)
438
+
client.run(bot_config.BOT_TOKEN)
426
439
427
440
if__name__=="__main__":
428
441
run()
@@ -431,17 +444,18 @@ After you finish setting up the webhook, bot, and API key for data stores, add t
431
444
</TabItem>
432
445
</Tabs>
433
446
434
-
1. On the **bot_config.py** file for main configuration of the bot:
447
+
1. On the `bot_config.py`filefor main configuration of the bot:
448
+
449
+
1. Set `BOT_TOKEN` to the token generated by your bot.
450
+
2. Set `OPEN_CLOUD_API_KEY`as the API key you created.
451
+
3. Set `ROBLOX_WEBHOOK_SECRET`as the secret you set when configuring the webhook on Creator Dashboard.
452
+
4. In `STANDARD_DATA_STORE_ENTRIES`and`ORDERED_DATA_STORE_ENTRIES` dictionaries for locating the data store of each record to delete:
453
+
1. Add your copied Start Place IDs as keys.
454
+
2. Add Universe IDs as the first element of the tuple value.
455
+
3. Replace the second element of the tuplewith the name, scope, entry key name, and associated User ID of your data stores. If you use a different data schema, modify to match your own data schema accordingly.
435
456
436
-
1. Set `DISCORD_BOT_TOKEN` or `GUILDED_BOT_TOKEN` to the token generated by your bot.
437
-
2. Set `OPEN_CLOUD_API_KEY` as the API key you created.
438
-
3. Set `ROBLOX_WEBHOOK_SECRET` as the secret you set when configuring the webhook on Creator Dashboard.
439
-
4. In `STANDARD_DATA_STORE_ENTRIES` and `ORDERED_DATA_STORE_ENTRIES` dictionaries for locating the data store of each record to delete:
440
-
1. Add your copied Start Place IDs as keys.
441
-
1. Add Universe IDs as the first element of the tuple value.
442
-
1. Replace the second element of the tuple with the name, scope, entry key name, and associated User ID of your data stores. If you use a different data schema, modify to match your own data schema accordingly.
457
+
1. Execute the following command to run the bot:
443
458
444
-
1. Execute the following command to run the bot:
445
459
<Tabs>
446
460
<TabItem label="Guilded">
447
461
@@ -459,7 +473,7 @@ After you finish setting up the webhook, bot, and API key for data stores, add t
459
473
</TabItem>
460
474
</Tabs>
461
475
462
-
1. The bot then starts to listen and verify Roblox webhooks for right to erasure Requests and calls the Open Cloud endpoint for deleting the corresponding data store.
476
+
1. The bot then starts to listen and verify Roblox webhooks for right to erasure Requests and calls the Open Cloud endpoint for deleting the corresponding data store.
463
477
464
478
<Alert severity="warning">
465
479
To ensure constant and secure execution of the scripts, save and run them locally only. Keep your local device or virtual machine running the scripts turned on at all times. In the event that your device goes offline, you need to manually manage any missed messages during the offline period and handle delivery failures according to the [retry policy](../../cloud/webhooks/webhook-notifications.md#delivery-failure-retry-policy).
@@ -486,10 +500,10 @@ You can create and run a test message to verify that your custom program can pro
486
500
}'
487
501
```
488
502
489
-
2. If you have a webhook secret:
503
+
1. If you have a webhook secret:
490
504
1. Generate a `Roblox-Signature` by applying HMAC-SHA256 encoding to your webhook secret key.
491
505
2. Set the current time using UTC timestamp in seconds as`Timestamp`.
492
-
3. Put together the `description`in the following format:
506
+
1. Put together the `description`in the following format:
493
507
494
508
```plain title="Description Field Format"
495
509
{Timestamp}. You have received a new notification for Right to Erasure for the User Id: {userId} in the game(s) with Ids: {gameIds}`.
0 commit comments