I have this weird issue since a few weeks where my personal messages counter always says i have at least 35 unread messages, when i do not. I checked the entire history of all the messages i have gotten since my account was created and they were all read. I also checked my archived messages, of which there were some unread. However when I marked these as read, the message counter was still 35. When I get a new message it does rise to 36 so the counter does work. I tried clearing my cache on my browser but that didn’t work. I also checked my message count on the roblox app and on another browser, and there it also says 35.
(Also ignore the old roblox logo and colorway, I have a css extension that does that.)
Expected behavior
I expect the message counter to start at 0 instead of 35.
I sent this via PM, however as other people seem to have this issue I may as well send it here:
The below javascript code (which means it needs to be run in the console - I can explain anything in the code if you are worried about something in it if you would like) basically just loops through every single message you have and sends a request to mark it as read.
Theoretically, it should be able to fix the issue. However, as I do not have the issue present myself, testing has been limited. If it doesn’t fix the issue, you may also need to first mark everything as unread (replace "https://privatemessages.roblox.com/v1/messages/mark-read" with "https://privatemessages.roblox.com/v1/messages/mark-unread") before marking it as read again
let CurrentPage = 0
let TotalPages = 10 // this is updated by the code.
while (CurrentPage < TotalPages) {
let IDs = []
let current = CurrentPage
fetch("https://privatemessages.roblox.com/v1/messages?pageNumber=" + CurrentPage + "&pageSize=100&messageTab=Inbox",
{ method: "GET", credentials: "include" })
.then((response) => response.json())
.then((json) => {
console.log(json)
if (current == 0) {
TotalPages = json.totalPages
}
for (index = 0; index < json.collection.length; index += 1) {
IDs.push(json.collection[index].id)
}
})
.then(() => {
fetch("https://auth.roblox.com/v2/logout", { method: "POST", credentials: "include" }).then(err => {
let CSRFToken = err.headers.get("X-Csrf-Token")
fetch("https://privatemessages.roblox.com/v1/messages/mark-read", {
method: "POST",
body: JSON.stringify({
"messageIDs": IDs
}),
credentials: "include",
headers: {
"X-CSRF-Token": CSRFToken
},
referrer: "https://www.roblox.com",
}).then((response) => response.json())
.then((json) => {
console.log("Finished page", current)
})
})
})
CurrentPage += 1
await new Promise(r => setTimeout(r, 100));
}
Hello everyone, thank you for raising this issue!
We’ve internally identified a bug with how unread message counters were synced for some users within the last couple of weeks and are actively investigating a fix. Will post in this thread with any updates!
Hey all,
We identified the problem as a data desync that affected some users’ unread message counters over the past couple of weeks. We’ve now rolled out a fix and affected users should see the correct value displayed when viewing the webpage. Thank you for your patience as we attempt to resolve this issue for all impacted users.
Feel free to update here if you notice anything else!