diff --git a/src/commands.c b/src/commands.c
index 3518613e4d8b10017eb59ebad1fc43a7a62deaf0..a58f3d8be2c4806da6a49f4607bf2c3c8ce27ec6 100644
--- a/src/commands.c
+++ b/src/commands.c
@@ -1126,13 +1126,28 @@ command_sticker_get(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS
     return true;
 }
 
-// bool
-// command_sticker_set(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX])
-// {
-// }
-//
-// bool
-// command_sticker_delete(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX])
-// {
-// }
-//
+bool
+command_sticker_set(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX])
+{
+    if (argv[0] == NULL || argv[1] == NULL || argv[2] == NULL || argv[3] == NULL || argv[4] != NULL) {
+        fprintf(stderr, " ! command_sticker_get: Invalid argument, need only 3 arguments\n");
+        return false;
+    }
+
+    int uri = atoi(argv[1]);    /* FIXME: Use strtol. */
+    int value = atoi(argv[4]);  /* FIXME: Use strtol. */
+
+    if (!database_sticker_set(srv->db, argv[0], argv[2], uri, value)) {
+        fprintf(stderr, " . command_sticker_get: Failed to get sticker '%s' to value %d for object "
+                "%s(%d)\n", argv[2], value, argv[0], uri);
+        return false;
+    }
+
+    return true;
+}
+
+bool
+command_sticker_delete(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX])
+{
+}
+