☑️ Settings

You can store local data on the tingbot. Simply use tingbot.app.settings as a dict. This will store any variables you like on a file in the application directory (called local_settings.json). This is stored in JSON format.

import tingbot

#store an item
tingbot.app.settings['favourite_colour'] = 'red'

#local_settings.json on disk now contains: {"favourite_colour":"red"}

#retrieve an item
tingbot.screen.fill(tingbot.app.settings['favourite_colour'])

Any item that can be stored in JSON can be used in tingbot.app.settings - so strings, ints, floats, even dicts and lists can be used.

Note

Take care when changing the insides of dicts or lists that are stored in tingbot.app.settings, as your changes will not be saved automatically.

You can force a save by calling tingbot.app.settings.save()

import tingbot

# create a sub-dictionary
tingbot.app.settings['ages'] = {'Phil': 39, 'Mabel': 73}

# local_settings.json on disk now contains: {"ages":{"Phil":39,"Mabel":73}}

tingbot.app.settings['ages']['Barry'] = 74

# warning: local_settings.json has not been updated because you haven't directly changed tingbot.app.settings

tingbot.app.settings.save()

# now local_settings.json on disk now contains: {"ages":{"Phil":39,"Mabel":73,"Barry":74}}

Storage

There are three settings files, that have different uses:

  • default_settings.json When writing your app, you can put default values for your settings in this file.
  • settings.json Somebody who’s downloaded your app can create this file in Tide to fill in some settings before uploading to Tingbot. This file should be ‘gitignored’ so it’s not shared when the app is copied, and can contain secrets like API keys or passwords.
  • local_settings.json When code within the app sets a setting, it’s stored in this file. This prevents the app from overwriting data from the previous two files. This shouldn’t be copied with an app and should be ‘gitignored’ too.

When the first setting is accessed the app loads each file in turn, so values in ‘local_settings’ override those in ‘settings’, which override those is ‘default_settings’.