diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -8,6 +8,16 @@
 
 -
 
+## 1.15.6
+
+- [penelopeysm](https://github.com/discord-haskell/discord-haskell/pull/176) GHC 9.6 dependencies
+
+- [penelopeysm](https://github.com/discord-haskell/discord-haskell/pull/179) and [penelopeysm](https://github.com/discord-haskell/discord-haskell/pull/181) Improving emoji support
+
+- [penelopeysm](https://github.com/discord-haskell/discord-haskell/pull/182) Fix StartThreadNoMessage endpoint
+
+- [yutotakano](https://github.com/discord-haskell/discord-haskell/pull/183) Slim down stack matrix build
+
 ## 1.15.5
 
 - [Gregory1234](https://github.com/discord-haskell/discord-haskell/pull/173) Adding `global_name` field to the User object
diff --git a/discord-haskell.cabal b/discord-haskell.cabal
--- a/discord-haskell.cabal
+++ b/discord-haskell.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.0
 name:                discord-haskell
-version:             1.15.5
+version:             1.15.6
 description:         Functions and data types to write discord bots.
                      Official discord docs <https://discord.com/developers/docs/reference>.
                      .
@@ -19,6 +19,7 @@
 tested-with:         GHC == 8.10.7
                    , GHC == 9.2
                    , GHC == 9.4
+                   , GHC == 9.6
 extra-doc-files:     README.md
                    , changelog.md
 
@@ -158,27 +159,27 @@
     , Discord.Internal.Types.ScheduledEvents
   build-depends:
   -- https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/libraries/version-history
-  -- below also sets the GHC version effectively. set to == 8.10.*, == 9.0.*., == 9.2.*, == 9.4.*
-    base == 4.14.* || == 4.15.* || == 4.16.* || == 4.17.*,
-    aeson >= 1.5 && < 1.6 || >= 2.0 && < 2.2,
+  -- below also sets the GHC version effectively. set to == 8.10.*, == 9.0.*., == 9.2.*, == 9.4.*, == 9.6.*
+    base == 4.14.* || == 4.15.* || == 4.16.* || == 4.17.* || == 4.18.*,
+    aeson >= 1.5 && < 1.6 || >= 2.0 && < 2.3,
     async >=2.2 && <2.3,
-    bytestring >=0.10 && <0.12,
+    bytestring >=0.10 && <0.13,
     base64-bytestring >=1.1 && <1.3,
     containers >=0.6 && <0.7,
     data-default >=0.7 && <0.8,
-    emoji ==0.1.*,
+    emojis >=0.1.3 && <0.2,
     http-client >=0.6 && <0.8,
     iso8601-time >=0.1 && <0.2,
-    MonadRandom >=0.5 && <0.6,
+    MonadRandom >=0.5 && <0.7,
     req >=3.9 && <3.14,
     safe-exceptions >=0.1 && <0.2,
     text >=1.2 && <3,
-    time >=1.9 && <1.12,
+    time >=1.9 && <1.13,
     websockets >=0.12 && <0.13,
     network >=3.0.0.0 && <3.2.0.0,
     wuss >=1.1 && <3,
-    mtl >=2.2 && <2.3,
+    mtl >=2.2 && <2.4,
     unliftio >=0.2 && <0.3,
     scientific >=0.3 && <0.4,
-    http-api-data >=0.4 && <0.6,
+    http-api-data >=0.4 && <0.7,
     unordered-containers >=0.2.10.0 && <0.3
diff --git a/src/Discord.hs b/src/Discord.hs
--- a/src/Discord.hs
+++ b/src/Discord.hs
@@ -26,7 +26,8 @@
 
 import Prelude hiding (log)
 import Control.Exception (Exception)
-import Control.Monad.Reader (ReaderT, runReaderT, void, ask, liftIO, forever, asks)
+import Control.Monad (void, forever)
+import Control.Monad.Reader (ReaderT, runReaderT, ask, liftIO, asks)
 import Data.Aeson (FromJSON)
 import Data.Default (Default, def)
 import Data.IORef (writeIORef)
diff --git a/src/Discord/Internal/Rest/Channel.hs b/src/Discord/Internal/Rest/Channel.hs
--- a/src/Discord/Internal/Rest/Channel.hs
+++ b/src/Discord/Internal/Rest/Channel.hs
@@ -22,7 +22,7 @@
 
 import Data.Aeson
 import Data.Default (Default, def)
-import Data.Emoji (unicodeByName)
+import Text.Emoji (emojiFromAlias)
 import qualified Data.Text as T
 import qualified Data.ByteString as B
 import qualified Data.ByteString.Lazy as BL
@@ -401,11 +401,25 @@
 cleanupEmoji :: T.Text -> T.Text
 cleanupEmoji emoji =
   let noAngles = T.replace "<" "" (T.replace ">" "" emoji)
-      byName = T.pack <$> unicodeByName (T.unpack (T.replace ":" "" emoji))
-  in case (byName, T.stripPrefix ":" noAngles) of
-    (Just e, _) -> e
-    (_, Just a) -> "custom:" <> a
-    (_, Nothing) -> noAngles
+      noColons = T.replace ":" "" emoji
+      toneModifier s = case s of
+        "tone1" -> Just "\x1f3fb"
+        "tone2" -> Just "\x1f3fc"
+        "tone3" -> Just "\x1f3fd"
+        "tone4" -> Just "\x1f3fe"
+        "tone5" -> Just "\x1f3ff"
+        _ -> Nothing
+      byName = case emojiFromAlias noColons of
+        Just e -> Just e
+        Nothing ->
+          let (prefix, tone) = T.breakOnEnd "_" noColons
+           in case ((fst <$> T.unsnoc prefix) >>= emojiFromAlias, toneModifier tone) of
+                (Just p, Just t) -> Just (p <> t)
+                _ -> Nothing
+   in case (byName, T.stripPrefix ":" noAngles) of
+        (Just e, _) -> e
+        (_, Just a) -> "custom:" <> a
+        (_, Nothing) -> noAngles
 
 channels :: R.Url 'R.Https
 channels = baseUrl /: "channels"
@@ -566,7 +580,7 @@
            mempty
 
   (StartThreadNoMessage chan sto) ->
-      Post (channels /~ chan /: "messages" /: "threads")
+      Post (channels /~ chan /: "threads")
            (pure $ R.ReqBodyJson $ toJSON sto)
            mempty
 
