Compare commits

...

4 Commits

Author SHA1 Message Date
Lili (Tlapka) e5e88bf520 Merge branch 'master' of github.com:SleepyLili/tlapbot into develop 2024-02-04 11:28:51 +01:00
Lili (Tlapka) b4a6c4e41c html/jinja formatting improvements
thanks chat
2024-02-03 18:47:42 +01:00
Lili (Tlapka) 8c19088640 readme: reword milestone "goal" and "price"
should hopefully suggest more clearly that milestones need goal
and everything else needs price
also changed the example to list goal first
2023-07-13 12:44:15 +02:00
Lili (Tlapka) 5316f7e205 improve default_redeems
list milestone "goal" first in the redeems dictionary
2023-07-13 12:42:46 +02:00
3 changed files with 50 additions and 41 deletions

View File

@ -323,22 +323,21 @@ REDEEMS={
"lurk": {"price": 1, "type": "counter", "info": "Let us know you're going to lurk."}, "lurk": {"price": 1, "type": "counter", "info": "Let us know you're going to lurk."},
"react": {"price": 200, "type": "note", "info": "Attach link to a video for me to react to."}, "react": {"price": 200, "type": "note", "info": "Attach link to a video for me to react to."},
"request": {"price": 100, "type": "note", "info": "Request a level, gamemode, skin, etc."}, "request": {"price": 100, "type": "note", "info": "Request a level, gamemode, skin, etc."},
"go_nap": {"type": "milestone", "info": "Streamer will go nap when the goal is reached.", "goal": 1000}, "go_nap": {"goal": 1000, "type": "milestone", "info": "Streamer will go nap when the goal is reached."},
"inactive": {"price": 100, "type": "note", "info": "Example redeem that is inactive by default", "category": ["inactive"]} "inactive": {"price": 100, "type": "note", "info": "Example redeem that is inactive by default", "category": ["inactive"]}
} }
``` ```
#### File format #### File format
`redeems.py` is a config file with just a `REDEEMS` key, that assigns a dictionary of redeems to it. `redeems.py` is a config file with just a `REDEEMS` key, that assigns a dictionary of redeems to it.
Each dictionary entry is a redeem, and the dictionary keys are strings that decides the chat command for the redeem. Each dictionary entry is a redeem, and the dictionary keys are strings that decides the chat command for the redeem.
The value is another dictionary that needs to have entries for `"type"`, The value is another dictionary that needs to have an entry for `"type"` and
an entry for `"price"` unless the redeem is a milestone, an entry for `"price"` for non-milestones or `"goal"` for milestones.
and optionally `"info"` and `"category"`. Optionally, each redeem can also have `"info"` and `"category"` entries.
If the `"type"` is `"milestone"`, there's an additional required `"goal"` field as well.
- `"price"` value should be an integer that decides how many points the redeem will cost. Milestone redeems don't use the `"price"` value. - `"price"` value should be an integer that decides how many points the redeem will cost. Milestone redeems don't use the `"price"` value, they instead need to have a `"goal"`.
- `"goal"` is a required field for milestone goals. It should be an integer, deciding the amount of points required to complete the milestone.
- `"type"` value should be either `"list"`, `"counter"`, `"note"` or `"milestone"`. This decided the redeem's type, and whether it will show up as a counter at the top of the dashboard or as an entry in the "recent redeems" chart. - `"type"` value should be either `"list"`, `"counter"`, `"note"` or `"milestone"`. This decided the redeem's type, and whether it will show up as a counter at the top of the dashboard or as an entry in the "recent redeems" chart.
- `"info"` value should be a string that describes what the command does. It's optional, but I recommend writing one for all `"list"`, `"note"` and `"milestone"` redeems (so that chatters know what they're redeeming and whether they should leave a note). - `"info"` value should be a string that describes what the command does. It's optional, but I recommend writing one for all `"list"`, `"note"` and `"milestone"` redeems (so that chatters know what they're redeeming and whether they should leave a note).
- `"goal"` is a required field for milestone goals. It should be an integer, deciding the amount of points required to complete the milestone.
- `"category"` is an optional list of strings, the categories the redeem is in. - `"category"` is an optional list of strings, the categories the redeem is in.
If a category from the list is in `ACTIVE_CATEGORIES` from `config.py`, If a category from the list is in `ACTIVE_CATEGORIES` from `config.py`,
then the redeem will be active. It will not be active if none of the categories then the redeem will be active. It will not be active if none of the categories

View File

@ -3,6 +3,6 @@ REDEEMS={
"lurk": {"price": 1, "type": "counter", "info": "Let us know you're going to lurk."}, "lurk": {"price": 1, "type": "counter", "info": "Let us know you're going to lurk."},
"react": {"price": 200, "type": "note", "info": "Attach link to a video for me to react to."}, "react": {"price": 200, "type": "note", "info": "Attach link to a video for me to react to."},
"request": {"price": 100, "type": "note", "info": "Request a level, gamemode, skin, etc."}, "request": {"price": 100, "type": "note", "info": "Request a level, gamemode, skin, etc."},
"go_nap": {"type": "milestone", "info": "Streamer will go nap when the goal is reached.", "goal": 1000}, "go_nap": {"goal": 1000, "type": "milestone", "info": "Streamer will go nap when the goal is reached."},
"inactive": {"price": 100, "type": "note", "info": "Example redeem that is inactive by default", "category": ["inactive"]} "inactive": {"price": 100, "type": "note", "info": "Example redeem that is inactive by default", "category": ["inactive"]}
} }

View File

@ -30,12 +30,14 @@
<th>Your points balance</th> <th>Your points balance</th>
</tr> </tr>
</thead> </thead>
{% for user in users %}
<tbody> <tbody>
{% for user in users %}
<tr>
<td> {{ user[0] }} </td> <td> {{ user[0] }} </td>
<td> {{ user[1] }} </td> <td> {{ user[1] }} </td>
</tbody> </tr>
{% endfor %} {% endfor %}
</tbody>
</table> </table>
{% endif %} {% endif %}
@ -52,12 +54,14 @@
<th>Active counters</th> <th>Active counters</th>
</tr> </tr>
</thead> </thead>
{% for counter in counters %}
<tbody> <tbody>
{% for counter in counters %}
<tr>
<td> {{ counter[0] }} </td> <td> {{ counter[0] }} </td>
<td> {{ counter[1] }} </td> <td> {{ counter[1] }} </td>
</tbody> </tr>
{% endfor %} {% endfor %}
</tbody>
</table> </table>
{% endif %} {% endif %}
{% if milestones %} {% if milestones %}
@ -68,13 +72,15 @@
<th>Progress</th> <th>Progress</th>
</tr> </tr>
</thead> </thead>
{% for milestone in milestones %}
<tbody> <tbody>
{% for milestone in milestones %}
<tr>
<td> {{ milestone[0] }} </td> <td> {{ milestone[0] }} </td>
<td> <progress id="file" max={{ milestone[2] }} value={{ milestone[1] }}></progress></td> <td> <progress id="file" max={{ milestone[2] }} value={{ milestone[1] }}></progress></td>
<td> {{ milestone[1] }} / {{ milestone[2] }}</td> <td> {{ milestone[1] }} / {{ milestone[2] }}</td>
</tbody> </tr>
{% endfor %} {% endfor %}
</tbody>
</table> </table>
{% endif %} {% endif %}
{% endif %} {% endif %}
@ -99,16 +105,18 @@
<th>Note</th> <th>Note</th>
</tr> </tr>
</thead> </thead>
{% for row in queue %}
<tbody> <tbody>
{% for row in queue %}
<tr>
<td>{{ row[0].replace(tzinfo=utc_timezone).astimezone().strftime("%H:%M") }}</td> <td>{{ row[0].replace(tzinfo=utc_timezone).astimezone().strftime("%H:%M") }}</td>
<td>{{ row[1] }}</td> <td>{{ row[1] }}</td>
<td>{{ row[3] }}</td> <td>{{ row[3] }}</td>
{% if row[2] %} {% if row[2] %}
<td>{{ row[2] }}</td> <td>{{ row[2] }}</td>
{% endif %} {% endif %}
</tbody> </tr>
{% endfor %} {% endfor %}
</tbody>
</table> </table>
{% endif %} {% endif %}
</body> </body>
@ -136,8 +144,9 @@
<th>Description</th> <th>Description</th>
</tr> </tr>
</thead> </thead>
{% for redeem, redeem_info in redeems.items() %}
<tbody> <tbody>
{% for redeem, redeem_info in redeems.items() %}
<tr>
<td>{{ prefix }}{{ redeem }}</td> <td>{{ prefix }}{{ redeem }}</td>
{% if redeem_info["type"] == "milestone" %} {% if redeem_info["type"] == "milestone" %}
<td></td> <td></td>
@ -148,8 +157,9 @@
{% if redeem_info["info"] %} {% if redeem_info["info"] %}
<td>{{ redeem_info["info"] }}</td> <td>{{ redeem_info["info"] }}</td>
{% endif %} {% endif %}
</tbody> </tr>
{% endfor %} {% endfor %}
</tbody>
</table> </table>
{% endif %} {% endif %}
</body> </body>