How to make "switch to group" and "move to group" keys work?

I finally found the solution. Here is the content of my groups.py:

# Imports

from libqtile.config import Key, Group, Match
from libqtile.command import lazy
from .keys import keys, mod

# Defining groups

bindings = ["KP_End", "KP_Down", "KP_Page_Down", "KP_Left", "KP_Begin", "KP_Right", "KP_Home", "KP_Up", "KP_Page_Up"]
groups = [
    Group("1"),
    Group("2", matches=[Match(wm_class=["emacs"])]),
    Group("3", matches=[Match(wm_class=["chromium"])]),
    Group("4", matches=[Match(wm_class=["keepassxc"])]),
    Group("5", matches=[Match(wm_class=["telegram-desktop"])]),
    Group("6"),
    Group("7"),
    Group("8"),
    Group("9"),
]

# Switch to specific group

for i, group in enumerate(groups):
  keys.extend([
    Key([mod],
	bindings[i],
	lazy.group[group.name].toscreen()),

    Key([mod, "shift"],
	bindings[i],
	lazy.window.togroup(group.name, switch_group=True)),

  ])

# Switch previous/next group

keys.extend([
    Key([mod], "Right",
	lazy.screen.next_group(),
	desc="Switch to next group"),

    Key([mod], "Next",
	lazy.screen.next_group(),
	desc="Switch to next group"),

    Key([mod], "Tab",
	lazy.screen.next_group(),
	desc="Switch to next group"),

    Key([mod], "Left",
	lazy.screen.prev_group(),
	desc="Switch to previous group"),

    Key([mod], "Prior",
	lazy.screen.prev_group(),
	desc="Switch to previous group"),

    Key([mod, "shift" ], "Tab",
	lazy.screen.prev_group(),
	desc="Switch to previous group"),
    ])