تخطَّ إلى المحتوى

ما الذي تغيّر

كل تغيير، بتاريخه، بالترتيب الذي حدث به. مكتوب يدويًا، مدخلة لكل أمر يستحق المعرفة.

  1. 13 October: your avatar stays up to date on the dashboard

    Changing your Discord avatar no longer leaves a broken image in the dashboard header.

    أُصلح
    • Your avatar follows Discord. The dashboard kept the avatar you had when you signed in, so after changing it on Discord the header showed a broken image until you signed out and back in. It now picks up your new avatar and display name within a few hours, without signing in again.
    • No more broken image in the meantime. If your avatar cannot be loaded, Discord's default avatar is shown instead.
  2. 3 October: tickets open even when the category is locked down

    Opening a ticket no longer fails with an unexplained error when the ticket category limits the bot's permissions.

    أُصلح
    • Tickets open in restricted categories. If the ticket category withheld a permission such as Manage Messages from the bot, Discord refused to create the channel and the member got a bare error. The ticket now opens with the permissions the bot is able to give there.
    • A clear message when the bot really cannot open a ticket. If the bot is missing View Channel, Manage Channels or Send Messages in the category, the member is told which category to fix and which permissions to give, instead of seeing a technical error.
  3. 1 October: panels publish even with an unusual button emoji

    An emoji Discord does not accept no longer stops an application, ticket, poll or embed panel from being published.

    أُصلح
    • Application panels publish again. If the button emoji was a shortcode like :smile:, a word, or an emoji followed by text, Discord refused the whole panel and saving the form failed. The button now keeps its label and is published without the emoji.
    • The same protection for tickets, polls and embeds. Their buttons and menus had the same weakness: an emoji Discord does not recognise is now left out instead of blocking the message.
  4. 30 September: hidden voice rooms stay under control

    Hiding or locking a temporary voice room no longer leaves the bot locked out of it, and a rare voice connection error no longer restarts the bot.

    أُصلح
    • Hidden temporary rooms can be shown again. On servers where the bot is not an administrator, hiding a room also hid it from the bot: showing it again, locking it or deleting it once empty then failed. The bot now keeps its own access to the room before closing it to everyone else.
    • A clear answer when the bot lacks a permission. If Discord still refuses a lock, hide or kick, the room owner is told which permissions to give the bot instead of a generic error.
    • Music: a voice connection error no longer restarts the bot. A connection that fails at the wrong moment now only affects the music in that channel.
  5. 28 September: clearer level rewards, and image links that work

    Level rewards now show the XP each level takes, and an image link that cannot display is caught when you save instead of showing a blank box.

    أُضيف
    • The XP of each reward level, beside it. On the Levels page, rewards are now titled “Levels and roles”, and each row shows the total XP its level takes — no more guessing what level 30 means.
    أُصلح
    • Image links that open a page are caught. A link like imgur.com/a/… opens a web page, not an image, and Discord showed an empty box. Saving one now says so and explains how to copy the image's own address (it starts with i.imgur.com).
  6. 27 September: a button panel for the economy, a lounge radio, and fixes

    Members can now use the economy without typing a single command, a voice room can play a radio on its own, and servers running their own custom bot get every feature back.

    أُضيف
    • An economy panel with buttons. From the Economy page, publish a message in any channel: members collect their daily reward, check their balance, buy from the shop and play heads or tails with a click. Every answer is private, and the same rules as the commands apply.
    • A lounge radio. On the Music page, pick a voice room and a radio stream: the bot joins with the first person and plays it, and leaves with the last. No command needed, and it never takes the bot away from a room where someone is using /play.
    تغيّر
    • Discord AutoMod tells you what is wrong. When a rule cannot be saved, the message now names the rule and the reason, and the field in question is highlighted, in the right tab.
    • The /leaderboard link follows your settings. The link to the public leaderboard only appears when the public leaderboard is on — turning it off also removes the link.
    • Images pasted from Discord are refused, with the reason. A Discord image link stops working after a day or two, which is why some card backgrounds went blank. Pasting one as a background or an image now says so: use a permanent link instead (imgur, your own site…). A link already saved is left as it is.
    أُصلح
    • A module you switch off stays off. Switching off Polls or Moderation, or any module a pack had turned on, could come back on at the next page load. The switch now does what it says.
    • Servers with their own custom bot get everything back. Auto-clean, statistics channels, birthdays, bump reminders and scheduled backups never ran on them, publishing an embed answered “the bot is not on this server”, and music could stop mid-song. All of it now works through your own bot, with or without BILBI on the server.
  7. 25 September: a donation page

    A new public page lets anyone who wants to support BILBI give a free amount, paid securely on Stripe.

    أُضيف
    • A donation page. Anyone can now support BILBI from /donate: pick a preset amount or type your own, and Stripe hosts the secure payment. A donation is a thank-you, not a purchase — it unlocks nothing and stores nothing. There is a link in the site footer.
  8. 25 September: two fixes

    The roles you pick for a voice generator are now actually saved, and the verification portal can be re-published after switching to a custom bot.

    أُصلح
    • The roles chosen on a voice generator are now saved. The « who gets the controls » and « protected roles » pickers displayed and filled in, but the save quietly dropped them — so every generator kept an empty list and the panel appeared for everyone. They now persist. If you had set them, open the generator, select the roles again and save.
    • The verification portal can be re-published after removing a bot. A server that switched to its own custom bot had a portal left by the previous bot; re-publishing tried to edit that old message, which is not allowed, and nothing happened. Re-publishing now posts a fresh portal owned by the current bot.
  9. 24 September: temporary rooms — panel, protected roles, one-tap kick

    Three improvements to temporary voice rooms: the control panel now appears on its own, staff can no longer be kicked out by a room owner, and removing someone is a tap on a list instead of a command.

    أُضيف
    • Protect your staff from being kicked out of a room. On a voice generator's page, a « Protected roles (cannot be kicked) » field: a member holding one of those roles can never be removed from a temporary room by its owner. The server owner and administrators are always protected, even without a role there — so an admin can no longer be thrown out of a VIP's room and locked away from it.
    تغيّر
    • The room control panel now appears automatically in the room's chat when it is created — no need to type /voice panel (which still works to bring it back). It appears only for a room whose owner has the controls.
    • Removing someone from your room is now one tap. The panel's « kick » button opens a list of the people in the room: tap a name and they are removed. No /voice kick, no user IDs.
    أُصلح
    • The /snake game buttons sometimes answered « This interaction failed » on a slow moment. The game now acknowledges the press instantly, so it never happens.
  10. 24 September: VIP tickets and VIP shop items

    Two more ways to reserve something to certain roles: a ticket panel only some roles may open, and a shop item only some roles may buy. Leave the new fields empty and nothing changes.

    أُضيف
    • Reserve a ticket panel to certain roles. On a panel's page, a « Roles that may open » picker: set it, and only members holding one of those roles can open a ticket from that panel — a VIP support queue, without a second hidden panel. The button stays visible to everyone; a member who cannot open is told so before filling any form. Empty means everyone, as before.
    • Reserve a shop item to certain roles. Each shop item now has a « Roles required to buy » field: set it, and only members holding one of those roles can purchase — a VIP-only item. Empty means anyone with the coins, as before.
  11. 24 September: VIP voice rooms

    Temporary voice generators can now reserve the room controls to certain roles. Ordinary members still get a room of their own; only the roles you choose get the panel and the /voice commands.

    أُضيف
    • Reserve temporary-room controls to certain roles. On a voice generator's page there is now a « Who gets the controls » section: pick one or more roles, and only members holding them can rename, set a limit, lock, hide or remove — everyone else still gets their own room, without controls. Leave it empty and nothing changes: every creator controls their own room, as before. It is decided from the creator's roles at the moment the room is born. This is how you give VIP members a room they can shape while ordinary members get a plain one.
  12. 24 September: a full audit, forty fixes

    A complete pass over the code: security, correctness, Discord's rules and limits, and what happens at scale. Most of it you will never notice, which is the point — and a few things you may have noticed are now fixed.

    تغيّر
    • Your settings survive removing the bot. Nothing is deleted the day the bot leaves a server: invite it back within ninety days and everything is exactly as you left it. After ninety days the server's data is deleted automatically — the privacy policy now says so, and lists what the modules record about members.
    • Server-scoped writes are checked twice. Every setting you save is written to the server you were authorised on — the address in the browser — and never to a server named inside the form. Three pages let a manager of one server move an automation, a shop item or a verification setup into another; none does now.
    • Two things now need an administrator, not a manager: widening the list of manager roles, and anything about the custom bot — its token, its name, starting and stopping it. Reading those pages is unchanged.
    • `/temprole` respects the hierarchy. A manager can no longer hand out, or take away, a role at or above their own rank, a role with dangerous permissions, or one to themselves. Administrators are unaffected.
    أُصلح
    • Premium earned with votes was ignored by the bot. The /premium page said Premium; the quotas, the custom bot and the sweeps said otherwise. They agree now.
    • Custom bots came back after a deployment. Each deploy was switching every custom bot off; you had to press Start again. They now restart on their own, and a hiccup during the restart no longer disables them for good.
    • Voice on busy servers. Members who had been in voice for a while could become invisible to the bot: no voice XP, a temporary room deleted with people in it, the music bot leaving a full room. The bot now reads who is in voice from Discord's own voice states.
    • Double voice XP on servers running both the main bot and a custom bot. Each was counting the same minute.
    • The staff birthday reminder was sent up to sixty times in the hour. Once, now.
    • A moderation command run on a slow server — a first mute, a ban with a notice and a log — answered "the application did not respond" although the sanction had landed. It now acknowledges first.
    • Access rules on grouped commands (`/giveaway end`, `/xp set`, `/warnings clear`…) were saved and shown, and never applied. They apply.
    • A custom command echoing a member's words (`!say {args}`) could ping @everyone on behalf of anybody. It no longer can; mentions written by the server itself in the command still work.
    • A wildcard trigger or filter term with many stars could freeze the whole bot on one message. Matching is now linear.
    • Reaction menus in `unique` mode with "clear reaction" took the role away the moment it was given. And unreacting on a `toggle` menu now removes that one role, as the page always said.
    • A ban or boost image uploaded for the welcome module was deleted by the nightly sweep after an hour.
    • Stripe events for a subscription that had ended could cancel the plan bought since; a late failed retry of a dead subscription marked the new one past due.
    • A member who left unverified and came back was punished within the minute. The grace period restarts on every arrival.
    • Scheduled messages and social alerts on a busy instance could be starved by the rows of servers the bot had left, or sent twice by an overlapping pass.
    • Statistics channels re-read the whole member list every minute when the number had not moved.
    • Long lists — custom commands, templates, shop, warnings, colours — and long poll questions no longer fail to post when they overrun Discord's limits; they are cut with a marker.
    • A reason longer than Discord's audit log allows made an unban fail; reasons are now capped at the input.
    • An error during the arrival packs replaced the public greeting with "something went wrong" for everybody in the channel. The error now goes to the person who clicked, and only them.
    • Single-use invitations credited nobody. A link deleted by Discord on its last use is now recognised.
    • Counting no longer resets the chain on a number judged against a count that had just moved.
    • Faction switches are recorded only when the roles actually changed, and a faction list too long to post is cut with a marker.
    • Quieter deployments: the bot's timers are stopped before the database closes, so a restart no longer logs a flurry of failed sweeps.
  13. 23 September: a module you switch off stays off

    Levels & XP switched itself back on after being disabled — merely opening its dashboard page was enough. A module you turn off now stays off until you turn it back on yourself.

    أُصلح
    • Opening a module's page no longer switches the module on. Configuring a module switches it on, which is the right rule — but the dashboard was applying it to requests that configure nothing. The Levels & XP page draws a live preview of the rank card as soon as it opens, and that preview alone was enough: a server that had just switched the module off found it on again for having looked at the page. Previews, connection tests and other read-only actions now leave the switch exactly where you left it.
    • A module switched off by hand is remembered as switched off. Until now the only thing recorded was what you wanted on, so nothing could tell a module you had deliberately disabled from one you had never had an opinion about — and anything that looked like configuring it could turn it back on. Your decision is now written down: saving settings on a disabled module leaves it disabled, and the banner at the top of the page keeps showing the switch that turns it on when you want it. One server spent a fortnight turning Levels & XP off every morning; our apologies, and thank you for the report.
  14. 20 September: a question already in your reserve says so

    Adding a Question of the day your reserve already held answered with an internal error, and the page said nothing at all. It now tells you the question is already there.

    أُصلح
    • Adding a question you already have now tells you so. The reserve refuses the same question twice, whatever the capitals — two people writing the same thing is the ordinary case, not a mistake worth two entries. But on the Question of the day page, that refusal arrived as an internal error, and nothing on the page showed it: the button simply came back to life, so the question was sent again, and again. It now answers plainly that the question is already in the reserve. A server that has reached its quota and re-adds a question it already holds hears that, too, rather than an invitation to upgrade.
    • The reserve's three buttons no longer fail in silence. Adding, approving and deleting a question each showed a message when they worked and nothing when they did not. All three now say what went wrong.
  15. 19 September: reported messages stop being kept

    A report copies the lines around the message it is about, so your team can still read them after the author deletes it. Those copied lines are now erased automatically after thirty days, and the privacy policy says so in the same breath as the rule it is an exception to.

    تغيّر
    • Reported conversations are erased after thirty days. When a member reports a message, BILBI copies the few lines around it into the report card — because in practice the author deletes the message before a moderator opens it, and a card that accuses without showing is a card nobody can act on. That copy was kept for as long as the report existed. It is now erased thirty days after the report is filed. The report itself does not move: its number, who reported whom, the verdict and who took it all stay in your registry. Only the copy of what other people wrote goes.
    • The privacy policy now names the exception it always had. It said the bot does not keep the content of your messages, which is true everywhere but that one place. Saying it plainly costs nothing and is the difference between a policy that describes the service and one that merely reassures. The same paragraph also spells out what a moderation case records when a rule fires: the word or the link domain that triggered it, never the message.
  16. 17 September: TikTok alerts, open to everyone

    TikTok has approved BILBI, so linking a TikTok account now works for any creator rather than only for the accounts registered for testing. Link yours and your new videos are announced on your server.

    تغيّر
    • TikTok alerts, out of testing. Until today the TikTok module ran against a test application: only accounts registered with TikTok for that purpose could be linked, so for everyone else the link simply refused. TikTok has now approved BILBI, and any creator can connect their own account from the TikTok module's page and have their new videos announced. One reminder about what this module can and cannot do, because TikTok decides it and not us: it announces the videos of the account that authorised BILBI, and only that one. Nobody can follow a creator they are not — TikTok publishes no interface for watching someone else, and we will not scrape pages to pretend otherwise.
    أُصلح
    • The TikTok page said the wrong thing when the module was unavailable. In all sixteen languages it explained the alerts needed a feed bridge the host had to provide — a dependency that disappeared when the module moved to TikTok's official interface. Anyone reading it was sent looking for something that no longer exists. It now names what is actually missing.
  17. 16 September: readable statuses on the partner page

    On a phone, the status beside each server on the partner page was squeezed into a label too short to hold it, and the text spilled over its own edge. Each status now takes the room it needs.

    أُصلح
    • The status of each server, legible on a phone. On the partner page, the table says for every server whether it counts and why. On a narrow screen the label carrying that answer kept its height while the text inside it wrapped, so the second line came out over the edge — a verdict as short as "Yours" was already unreadable. The label now grows to fit its sentence, in all sixteen languages, and the column stays where you can read it without scrolling sideways.
  18. 14 September: switch a module on from the command itself

    When a command belongs to a module that is switched off, the answer now carries a button to switch it on, right there in Discord. No need to open the dashboard to try a command.

    أُضيف
    • "Switch this module on", under a disabled command. Running a command whose module is off, like `/play` or `/verify-setup`, used to send you to the dashboard's Modules page. The answer now has a button that switches the module on at once and tells you to run the command again. Only the server's staff see it, and it is never offered for Premium modules.
  19. 13 September: /purge reaches old messages

    In a quiet channel, /purge said nothing matched because every message was older than 14 days, which Discord won't delete in bulk. It now deletes those too, one at a time.

    تغيّر
    • `/purge` now deletes messages older than 14 days. Discord only allows recent messages to be removed in bulk, so older ones used to be skipped, and a channel with nothing recent answered that nothing matched. They are now deleted one at a time. The command tells you first that it can take a few minutes, then gives the total.
  20. 13 September: /purge and /case list without a member

    Run without naming a member, /purge and /case list quietly looked only at the moderator who ran them. They now cover the whole channel and the whole server, as they always should have.

    أُصلح
    • `/purge count:100` deletes again. With no member given, it only considered your own messages and usually answered that nothing matched. It now takes the last messages from everyone, and still respects the other filters and Discord's 14-day limit.
    • `/case list` shows the server's cases. With no member given, it listed only the cases about the moderator running it.
    • Naming a member who already left now works with `/purge`, and a member that can't be read is refused instead of being ignored.
  21. 12 September: adding an alert twice says so

    Adding a social alert that already exists, the same source posting into the same channel, used to fail with an internal error. It now tells you the alert is already there, and nothing else changes.

    أُصلح
    • Re-adding an existing social alert no longer shows an internal error. Picking a Twitch, YouTube or other source for a channel that already announces it now answers "This channel already has an alert for this source." The existing alert was never affected and keeps posting; to change it, edit it from the list.
  22. 12 September: one card less on the Modules page

    Fun & games no longer appears in the module catalogue. It had nothing left to switch and nothing of its own to configure, so the card was a paragraph you could not act on. The commands themselves have not moved: they are always on, and Settings still refuses them one at a time.

    تغيّر
    • Fun & games is off the Modules page. Its switch went yesterday, and without one the card offered a description and a Configure button that led somewhere else. An entry you cannot act on reads as something broken rather than as a decision.
    • The two counts now agree. The number of modules on the home page and the catalogue you reach from it were counting different things by one. They count the same list.
  23. 11 September: the fun commands just work

    The dice, the pictures, the reaction counters and the games no longer wait to be switched on. They configure nothing, so there is nothing to switch: what a server can still do is refuse them one at a time, from Settings, like every other command.

    تغيّر
    • Fun & games is always on. It had a switch that turned all of it on or off at once, which is a blunt control for a set of commands that need no channel and no setting. Members were being answered "this module is disabled" on servers that had never been asked the question.
    • Refuse them one at a time instead. Settings already lets you turn off a single command, confine it to one channel or limit it to certain roles. `/cat` without `/slap` is now something you can actually say, which the old all-or-nothing switch never allowed.
    • Fun commands are filed under their own heading in Settings. They used to sit twenty rows deep under "core", which is not where anybody looks for `/pat`.
    أُصلح
    • `/snake` and `/choose` were filed nowhere. They are games like the rest and now appear with them.
  24. 10 September — seven new pages, and a link that earns Premium

    Seven pages written for one question each, in all sixteen languages, and a partner programme anyone can join: share your link, and the real servers it brings climb a ladder — ten of them is a month of Premium.

    أُضيف
    • Bring servers, earn Premium. A page of your own now gives you a personal link and shows what it brought, row by row, with the reason each server does or does not count. Ten servers that are still here a week later is a month of Premium, twenty-five is three months, fifty is a year — each milestone paid once. Servers you administer yourself never count, one server counts per owner, and a server needs real members and an owner whose account is not brand new.
    • Seven pages, one question each. Reaction roles, automatic roles, temporary voice channels, logs, statistics channels, starboard and birthdays each have their own page now, written in all sixteen languages, listing the real modules that answer them.
    تغيّر
    • The bot now tells the directories how many servers it is on. The listings that ask were showing nothing at all, which is what they show when a bot never answers.
  25. 10 September — giveaways draw, alerts stop repeating, and a few doors close properly

    A pass over the whole product. The visible half: giveaways and polls on servers running their own bot now end the way they should, social alerts stop announcing old posts once a month, and a double click no longer counts twice.

    تغيّر
    • Installing a shared configuration counts against your limits. Bringing in ten rules at once used to slip past the ceiling your plan sets, which meant the ceiling was not really a ceiling. It is checked before anything is written, and you are told if the batch does not fit.
    أُصلح
    • Giveaways, polls and temporary sanctions on servers running their own bot. A giveaway could reach its deadline and close without drawing anyone, a poll could end without posting its results, and a temporary ban could quietly become permanent. This affected servers using their own bot identity, and their neighbours. Deadlines are now handled once, by the one that should handle them.
    • Bonus entries in a giveaway are applied to everyone. The extra chances a role grants were only counted for members the bot happened to have in hand — on any sizeable server, that was almost nobody. Every entrant is now weighed properly at the draw.
    • Social alerts no longer repeat themselves. A channel that posts rarely would see its whole back catalogue announced again about a month later, all at once. What has already been announced stays announced, for as long as it is still listed.
    • A double click does one thing. Opening a ticket, claiming one, closing one, deciding an application, voting on a suggestion, claiming a daily reward: each could happen twice when two clicks landed together, or lose one of two people's actions. Each is now settled once, and the second click is told so.
    • The mute role works the first time. On a server that had never opened the moderation settings, muting created a fresh role each time and unmuting then insisted nobody was muted.
    • Stopping the music stops it. Asking the bot to leave could still announce the end of the queue afterwards, and leave something running in the background.
    • Signing in returns you where you were. Following a link to a page while signed out always dropped you on your server list after signing in, whatever page you had asked for.
    • Locking channels can always be undone. Two lockdowns started at the same moment could leave a channel locked with no record of how it was before, which made unlocking it impossible.
    • Payments are not lost to a hiccup. If the database stumbled at the moment a subscription was confirmed, the confirmation was dropped and never retried. It is now retried until it lands.
  26. 9 September — a mistyped address says so, instead of looking like a breakdown

    Three kinds of address answered as if the site had failed, when the only thing wrong was the address itself. They now say plainly that there is nothing there.

    أُصلح
    • A wrong address is answered as a wrong address. A page name that does not exist, a poll link whose identifier is malformed, a command page with the same — all three replied as though something had broken on our side. They now say there is nothing at that address, which is what was true. Nothing was ever lost along the way; what changes is what you are told, and that our own error reports stop filling with visitors' typing mistakes.
  27. 6 September — the page for spending your votes now has a way in

    The page that turns Top.gg votes into premium days existed at an address nobody could reach. It is now in the account menu, and in /vote.

    أُضيف
    • A page listing the servers you belong to, at bilbi.app/gift — reachable from the account menu, and from a new button on `/vote`. It says how many votes you have and what they are worth before you pick a server. This was announced this morning and was, in practice, unreachable: it needed a server identifier nobody has.
    تغيّر
    • The automatic first answer on tickets is for our own support server only. It was offered as a per-panel setting this morning, and that was a mistake worth correcting rather than quietly dropping: what it knows how to answer is questions about this bot, and your tickets are about your community — your rules, your staff, your events. Offering it to you was offering to answer questions it has never heard of. The setting is gone.
    أُصلح
    • Some pages threw an error behind the scenes when they redirected you, most visibly the sign-in redirect. Nothing was lost and no page broke, but the error was real and it is gone.
  28. 6 September — votes buy premium days now, and the site asks what you came for

    Voting no longer touches anybody's ranking: fifty votes turn into a week of Premium for a server you belong to.

    أُضيف
    • Fifty votes on Top.gg become seven days of Premium for a server you are in — you pick which, on the same page that lets you offer a subscription. Weekend votes count double, and the days are added on top of whatever the server already has rather than replacing it.
    • The front page asks what you came for: six doors — moderation, welcome, tickets, levels, music, giveaways — each opening on the modules that answer it, in all sixteen languages.
    تغيّر
    • Voting no longer gives double XP. It was the wrong reward: it moved a server's own ranking because somebody pressed a button on another website, and a server that had to think about switching it off was a server paying for it. Premium days change nothing about how a server works — they raise its ceilings — so there is nothing to refuse.
    • The first install step now fits in one line. It explained a permission decision at a moment nobody is making one.
  29. 6 September — voting now pays, and six pages for six questions

    A free vote on Top.gg gives you twelve hours of double XP, and the site now has a page for each thing a server actually goes looking for.

    أُضيف
    • Voting for the bot earns you twelve hours of double XP, on every server that keeps its levels open — and twelve hours is exactly how long Top.gg makes you wait before voting again, so voting every time you can keeps the bonus running without a gap. `/vote` shows whether yours is running, when you may vote next, and how many times you have.
    • A server can refuse it. Levels → *Double XP for voters*. The reward is ours to give, but the ranking belongs to the server, and a ranking moved by a button on somebody else's website is one its members did not agree to.
    • Six pages, one per thing a server needs: moderation, welcome, tickets, levels, music, giveaways — each in all sixteen languages, each listing what actually answers it. Nobody looks for an all-in-one bot; they look for a ticket bot, because they have a problem and it has a name.
    تغيّر
    • The Top.gg page is written by the bot now, in thirteen languages, from the same words the home page uses. It was kept up to date by somebody remembering to, and the command list was uploaded by hand — so the page described whatever the bot did on the day somebody last remembered.
  30. 5 September — a shorter front page, and one place to switch a command off

    The home page stopped listing forty-six modules at once, and the Fun page stopped disagreeing with the Settings page about which commands are on.

    أُضيف
    • The home page shows the main modules first, and the rest open behind a single link. Forty-six cards in one column asked you to read everything to find anything, and the list only grows.
    تغيّر
    • The Fun module no longer has a page of its own. It had one switch per command — the same list the Settings page already carries — plus a leaderboard nobody was going back to. Where the pictures come from, and whether hugs are counted, moved to Settings; everything else was already there.
    • One place decides who may run a command, whichever kind it is. The commands that follow you rather than a server are governed by the same rules as the others: a role, a room, or simply off.
    أُصلح
    • Switching off `/slap`, `/dice` or any of their neighbours on the Settings page now refuses it for real. The switch was saved and shown as saved, and the command answered anyway — it was reading a different list. Choices made on the old Fun page have been carried across, so nothing you had switched off comes back on.
  31. 5 September — what the Fun module carries, and a way to pay for a server you do not run

    A page that only had a switch now says what it switches on, and lets you refuse the commands one by one. And the person who would most like to pay for a server is often not the one who runs it.

    أُضيف
    • The Fun page lists its commands, with what each one does and a switch of its own. The module switch is all or nothing; these are one by one — a server that wants the fun without `/slap` can now say so. They apply in your rooms alone: elsewhere, for somebody who installed the bot on themselves, nothing changes.
    • Offer premium to a server you belong to. A page any member can open — no administration rights needed, because paying raises a server's ceilings without changing anything about how it works. The people who run it keep every setting; the subscription stays yours, on your receipt, and only you can stop it.
    • The tally shows totals per kind beside the ten most-used pairs: how many hugs, how many slaps, all pairs together.
    تغيّر
    • A ceiling is announced on the page where you are about to reach it, from three quarters full — not only in the module gallery, which is not where anybody is when they run out.
  32. 5 September — a Fun module, and the sidebar that stays where you left it

    The commands a server keeps for the room now have a page of their own — which is how a server gets to switch them off, decide where the pictures come from, and see who has hugged whom the most.

    أُضيف
    • Fun & games, a new module. `/dice`, `/flip`, `/rps`, `/8ball`, `/choose`, `/snake`, `/cat`, `/dog`, `/hug`, `/kiss`, `/pat` and now `/slap` and `/morpion` — noughts and crosses against somebody, on nine buttons.
    • A tally per pair. `/hug` now answers “the fourteenth time you two”, counted per server and never against yourself. It is what turns a command used twice into a joke a server keeps for a year, and the page shows the ten most-used pairs.
    • A page that says where the pictures come from. `/cat` and `/dog` draw on sources that hold nothing but animals. `/meme` draws on a public forum and stays off until a server allows it — no filter of ours makes that source incapable of something worse, and one misplaced image in a server full of children costs the application its verification.
    تغيّر
    • The module list keeps its place. Opening a module no longer sends the column back to the top; it returns to where you left it, and scrolls to the current module only when that is not visible.
    • Pictures are held for ten minutes. A source that is slow or down stops being the reason a command fails, and a free service nobody asked gets a fraction of the traffic.
    • The AutoMod page opens again. Since yesterday it answered with an error on every server that had saved its settings before the automatic emptying existed.
  33. 5 September — the small comforts, and six commands that follow you

    The things a bot is kept for months for are rarely the big ones. A word you follow, a channel that empties itself, a note the next moderator reads, a reminder nobody has to remember.

    أُضيف
    • Reminders, a new module with two halves. A member picks the words they want to be told about with `/highlight add`, and gets a private message when one is said — whole words only, never their own message, and never from a channel they cannot read. And the bot counts the listing's bumps, then says when the next one is due, in the channel you choose.
    • Notes on a member: `/note add`, `list` and `remove`. Not a warning — nothing is announced, nothing climbs the sanction ladder, and the member never sees it. It is a moderator telling the next moderator something, which today lives in one person's memory and leaves with them.
    • Auto-purge: a channel empties itself on a rule you set — an age in hours, bots only, pinned messages kept. For the rooms a server treats as disposable and nobody ever clears.
    • Six more commands that travel with you: `/choose`, `/math`, `/hex`, `/emoji`, `/qr` and `/base64`. Twenty-six in all now, installable on yourself from the bot's profile.
    تغيّر
    • `/purge` can now be narrowed: to one member, to messages containing a text, to bots or people, to those carrying a link, a file or an embed, and between two messages. Every filter takes away — the more you ask for, the less can be deleted by mistake.
    • A calculation is read, never executed. `/math` parses the expression into numbers and operators itself: handing it to the language would be offering anybody on Discord a way to run code here.
  34. 5 September — closing the doors, and giving back exactly what was there

    Every server that has been attacked once adds a second bot, for three things no general-purpose bot offers: shutting the rooms, filtering the arrivals, and stopping an administrator who has lost their account. BILBI now has all three, in one module that starts switched off and acts on nothing until asked.

    أُضيف
    • `/lock` on a channel, a category, the whole server, the joins or the invitations. `/unlock` gives back exactly the permissions that were there — including none at all, in which case the rule is removed rather than left empty. `/locks` says what is closed right now, because a lockdown put on during a raid at three in the morning is forgotten by lunchtime.
    • An arrival filter, judged on what Discord states about the account: its age, its default picture, refused name fragments, and bots added by somebody other than the owner. A refused arrival is held behind a role rather than thrown out — one click from being let in, and the team can see who is waiting.
    • Protection against mass deletion: channels, roles, bans and kicks, counted per person over a window you set. It starts by reporting only and stays that way until you say otherwise, and the owner is never touched by it — a bot that strips the owner has locked the only person able to undo it out of their own server.
    تغيّر
    • The module arrives switched off on every server, and each of its three parts waits to be asked separately. Security that turns itself on is security nobody chose.
    • A command option that names a channel now reaches the command. `/embed`, `/poll create` and the new `/lock` all take one; the value was read in a way that only worked for text, so providing the channel made the command fail with the generic error.
  35. 4 September — twenty commands that follow you, not your server

    Discord lets an app be installed by a person rather than by a server. BILBI offered nothing that way. Twenty commands now travel with whoever installs them, into every conversation they take part in — including servers the bot has never been added to.

    أُضيف
    • Install BILBI on yourself. Twenty commands then work everywhere you go: in your servers, in a friend's server that has never heard of the bot, and in private messages. Away from a server that has the bot, the answer is private to you — that is Discord's rule, not a choice.
    • New tools. `/timestamp` writes the time markup everyone reads in their own zone and language. `/convert` handles units and currencies, at the European Central Bank's daily rates. `/remind` sends you a private message later, up to thirty days out.
    • New games. `/snake` on a board of buttons, `/8ball`, `/dice` (`d20`, `2d6`), `/flip`, `/rps`, `/cat`, `/dog`, `/meme`, and `/hug` `/kiss` `/pat` with an animation.
    • `/invite`, `/dashboard`, `/vote`, `/ping`, `/avatar` and `/userinfo` travel too. They never needed a server, and being tied to one is what kept them out of reach of anybody who had installed the bot on themselves.
    تغيّر
    • `/userinfo` and `/avatar` answer about the account when there is no server to ask about. Roles and a join date belong to one server; a person's account is the same everywhere.
    • Everything that reads a server stays in the server. Moderation, music, levels, tickets, `/poll`, `/rank`: they need a configuration to read, and outside a server there is none.
  36. 4 September — the bot asks what you want, and does it

    Every module used to arrive switched on and waiting for a channel: a dashboard showing forty-three active modules, and a bot doing nothing. A new server is now asked one question when the bot walks in, and the answer configures it.

    أُضيف
    • A second picker under the arrival message, beside the language one: moderation, welcome, levels, support, alerts, fun. Several at once — and the answer is configured, not merely switched on: the log and the reports in one channel, three anti-spam filters that only delete, the welcome and farewell messages, level-ups, a starboard, suggestions, the day's question, birthdays, the collective count. Then it says where it put each one.
    • An undo button, for ten minutes. It puts everything back, including a channel the bot made. Nothing already configured is ever overwritten, so nothing already configured can be lost.
    • A « later » button. It closes the question without insisting, and it is what stops the single reminder a day afterwards.
    تغيّر
    • A new server starts with what works out of the box — the moderation commands and polls — and grows from its answer. Configuring a module from the dashboard switches it on by itself, so nothing has to be turned on twice.
    • Servers already here keep exactly what they had. Nothing switches off under a server that was not asked.
    • The greeting goes to a channel members can read. It used to take the topmost channel the bot could write in, which on many servers is a staff room.
  37. 4 September — the health card says which module, and which channel

    "A channel named by a module has been deleted" was true of forty pages at once. Each finding now names the module it belongs to, and the identifier of what is missing.

    تغيّر
    • Every line of the health card names its module. Welcome, Tickets, Levels — the part that says which page to open. A deleted channel or role also carries its identifier, which is all Discord leaves of an object that no longer exists, and what tells two findings on the same module apart.
    • A social alert names its platform, not "social": the seven share one engine and are seven entries in the catalogue.
  38. 3 September — the health card sees the roles the bot cannot hand out

    A role placed above the bot is refused by Discord whatever its permissions — and the card that exists to explain "I set it up and nothing happens" was blind to the rules that hold most of them.

    أُصلح
    • Automatic roles, self-service roles and every other rule kept in a list were never checked. The audit read one value per setting, and those live in arrays — so a server whose three configured roles all sat above the bot was told everything was fine while nothing was ever granted. Each entry of a list is now checked on its own, and the card names the role and says why it cannot be given.
  39. 3 September — the language chosen on arrival now follows everywhere

    Picking a language under the welcome message now changes the slash commands too, and the buttons open the site in that language.

    أُصلح
    • The slash commands kept their old language. Discord freezes a command's description when it is published, so choosing a language from the welcome message changed the message and the dashboard while `/help` stayed as it was — you had to open the dashboard and pick the same language a second time. The choice now republishes them, exactly as the dashboard does.
    • The buttons opened the site in the wrong language. The site decides its own from a cookie or from the browser, so a server that had just chosen Thai clicked "Dashboard" and landed in English. The three links carry the chosen language, and the site remembers it.
  40. 3 September — the bot arrives in your language, and says so from the first message

    A new server is now greeted in the language it told Discord it speaks, and the language can be changed from that very message — no dashboard needed.

    أُضيف
    • A language picker under the welcome message. Sixteen languages, each written in its own, and choosing one redraws the message in it straight away. Reserved to whoever can manage the server, since it is a server-wide setting.
    • A link to the ready-made setups in that same message: of the servers that removed the bot, those who answered said they had not known where to start.
    تغيّر
    • A new server starts in its own language. Discord knows what language a community is set to, and it was ignored: every arrival was greeted in English, with English command descriptions, whatever the server had said. It is adopted on arrival — and a server that has already chosen keeps its choice.
    أُصلح
    • Four answers the bot gave were in French whatever the server's language — a deleted role menu, an option that no longer exists. They go through the dictionary now, like everything else it says, and a guard keeps it that way.
    • A refused upload explained itself in French too, including the one message you read after waiting for a large file.
  41. 3 September — images upload again, and a refused save says why in your language

    Uploading a picture failed on every server; the messages explaining a refused save were written in French whatever the dashboard's language; and both are fixed.

    أُصلح
    • Uploading an image failed, every time. The folder the pictures go into belonged to the wrong user inside the container, so a welcome banner or a card background was refused with nothing shown but a generic error. It is also kept outside the image now: an upload no longer disappears the next time the bot is updated.
    • A refused save explained itself in French only. Nineteen of these messages — "choose the channel for the portal", "two rules act on the same role", "a link button needs an address" — now exist in all sixteen languages, so a save that is refused says what to change wherever you read it.
    • Starting a custom bot answered in French too, on the one action of a paid module.
    • A refused save now points at the field it is about. The answer has always named it; nothing on the page read that name, so the message said what was wrong without saying where.
  42. 2 September — the site shows the product, and every setup has its own page

    The home page now shows the dashboard and what the bot says in a room; the ready-made setups are readable by anyone, one page each; and every server can have a public page of its own.

    أُضيف
    • The home page shows the product. The dashboard and the messages the bot posts, drawn from the interface's own parts rather than photographed — so they cannot go stale the week the design moves, and they stay sharp on any screen.
    • Every ready-made setup has a public page. What it does line by line, what it will be allowed to do, who wrote it — readable without an account, in sixteen languages, and one click from installing it. They are listed at /presets and declared to search engines.
    • A server can have a public page of its own, at /server/<id>: its name, what it runs, how many birthdays fall this month, and the five most active members. Members can share it; the ranking appears only where the server already allows it, and birthdays are counted, never named. It is switched on by default and turned off in Settings.
  43. 2 September — Spotify links, streams that repair themselves, and a name instead of a number

    Paste a Spotify track, album or playlist and the room hears it; a track cut off mid-song resumes where it stopped; and the announcement says who asked for it by name.

    أُضيف
    • Spotify links work. A track, an album or a playlist pasted into `/play` is read for what it names — title, artist, length — and played from a source that can actually serve it. The reply says the recording comes from elsewhere, because it does: nothing here plays Spotify's own audio.
    أُصلح
    • A track cut off after a few seconds now resumes instead of being skipped. A media address is often good for a single read: when the stream died early, everything downstream read it as "the song is over". It is resolved again and restarted at the second it stopped, twice at most.
    • A stream that stops arriving no longer leaves the bot sitting in silence. It waited for a frame that never came, with nothing to end the track and nothing to advance the queue. After twenty-five seconds the track is given up on — and a permanent refusal from the host is no longer retried for ever.
    • Skip is inert once the queue is finished. Pressing it started the whole evening again from the first track.
    • The announcement named a number. "Asked for by <@…>" is what Discord prints when a mention is put in a footer — it renders nowhere but in a message body. It now carries the member's name and their picture.
  44. 2 September — a dropdown no longer offers an answer the form refuses

    Every single-choice menu offered "No selection", including the bot's language, where it is not one of the answers.

    أُصلح
    • "No selection" appeared where nothing is a valid answer. Picking it on the bot's language — or on a time zone — left the field empty and the save was refused, with nothing having warned you. The entry now appears only where the page says nothing is an answer, and it carries that page's own wording: the announcement channel offers "the channel the command came from" rather than a generic line.
  45. 2 September — a public page for the lyrics, and a bot that lets go of the room

    The words of what is playing are now readable by anyone holding the link, the bot leaves a room that has gone quiet or empty, and an announcement that cannot be posted says why.

    أُضيف
    • A public lyrics page, like the public leaderboard: `/lyrics` hands out the link, and anybody can follow the words line by line without an account or a dashboard. It is open while the module and its lyrics lookup are on.
    تغيّر
    • The bot leaves a paused player or an empty room. It only ever counted the silence of a finished queue, so a track left paused — or a room everybody had walked out of — kept it sitting there until somebody removed it by hand. The server's own patience now applies to all three.
    أُصلح
    • Announcements could go nowhere in silence. The channel a server names was looked up in a cache rather than fetched, the channel a command came from could be missing, and a refusal to post was swallowed. All three now resolve properly, and anything left unposted says why in the server log.
  46. 2 September — the music stops repeating itself, and holds together

    A finished queue no longer starts again on its own, the sound now matches the voice channel it is sent into, and the announcements page says when its master switch is off.

    تغيّر
    • The sound follows the room. Everything was encoded at 96 kbps whatever the channel allowed — and Discord carries no more than the channel's own bitrate, so on an unboosted server the excess was dropped on the way and heard as a stream breaking up. It now matches the channel, up to 128 kbps, with Opus error correction on top.
    • Playback survives a hiccup. A megabyte of audio is kept ready ahead of the player, the transcoder reconnects on a dropped chunk or a failing response instead of ending the track, and the player waits a second before giving up on a late frame rather than a tenth of one.
    • The announcements page says when it is switched off. The five settings under the main switch do nothing while it is off, and they were described as though they applied.
    أُصلح
    • A queue that finished started itself again from the top. Ending a queue stops the transcoder, which ends the stream the player was on — and that last silence was read as "this track is over, play the next one", with the next one being the first. Nothing restarts a finished queue now except somebody asking for it.
  47. 2 September — six new limits, and an overview that uses what it knows

    Music, sticky messages, levels, watches, self-service roles and the sanction ladder now show how far a server may go — and the dashboard's first page finally shows the numbers it was already computing.

    أُضيف
    • Six modules gained a limit, shown as a gauge like the others: tracks in a queue, sticky messages, reward roles per level, watches, self-service roles and the steps of the automatic sanction ladder. Premium raises each of them.
    • The overview says which limits you are close to. Every quota was being computed for that page and none was displayed; the three nearest their ceiling now are, with a bar apiece.
    • It also says how much of the bot is switched on — twelve of forty-three — and links to the rest.
    • Command access is reachable from Settings, where it belongs: it is a setting, with no switch and no limit of its own, and it keeps a page only because it holds a rule for each of sixty-five commands.
    تغيّر
    • The overview's shortcut column listed all forty-three modules, which is a table of contents rather than a shortcut. It shows the six this server actually switched on.
    • The figures at the top carry an icon each, and the plan appears beside the server's own details.
    أُصلح
    • The closing button on the home page had turned grey. Making plain buttons visible everywhere had also repainted the one that asks for white; a button that names its own colour keeps it.
    • The command-access page stretched and pushed the sidebar out of view while it loaded. A native dropdown is as wide as its longest entry, and that page holds three for each of sixty-five commands: they are now held to the width the component will take.
  48. 2 September — the lyrics keep up with the music

    The sheet on the dashboard followed a line behind the song. It now keeps its own clock, and the position it is given is the one the track is actually at.

    أُصلح
    • The highlighted line lagged behind what was being sung. The page counted time by adding a fixed step on a timer — and a browser slows timers down, especially while something is scrolling, so every late step was time never counted. It now reads the clock instead of counting ticks.
    • Each refresh pulled the highlight backwards. The position was written in exactly as received, although it describes where the track was when the request was handled; half the round trip is added back, and the page only re-syncs when it has genuinely drifted.
    • The first look at a new song started it behind. The words are fetched from an open catalogue the first time a track plays, and the position was read before that call rather than after it.
  49. 2 September — command access moves into Settings, and the limits stop lying

    Who may run which command is now a section of the Settings page, the overview counts the social alerts the way the modules do, and the search box in the top bar finally goes somewhere.

    أُضيف
    • The search box takes you to the modules. It only ever filtered the gallery, so on the other forty pages it did nothing at all: typing now opens the module list with the words you typed already in it.
    تغيّر
    • Command access is part of Settings. It is a setting — no switch, no limit, nothing to turn on — and it kept a page of its own only because sixty-five commands are a long table. The table is now folded by group, with a filter above it, and one save bar for the whole page.
    • The music module says what "shuffle" actually does: a playlist or an album added at once enters the queue in a random order, and the track playing keeps its place.
    • Pages are told what a browser may keep. Nothing said anything before, which left every browser to guess: a server's own pages are never stored, and the public pages are kept and revalidated — which is what makes going back to the site from the dashboard quick rather than a fresh download.
    أُصلح
    • The overview showed "6 / 3" for the social alerts. Three alerts is a limit *per platform*, and the figure added the seven together — a ceiling passed that nothing would ever refuse anything for. Each platform now answers for itself.
    • The overview hid limits you were about to hit. It showed three, and the bogus social figure took one of the three slots: it shows six, so a full backup schedule no longer falls off the list.
    • The command list no longer stretches the page while it loads. The role and channel lists are published once for all sixty-five commands, and a group's pickers are built when you open it.
    • On the lyrics page, "nothing playing" ran into the buttons beside it on a narrow screen.
  50. 2 September — lyrics, an evening that carries on, and stages

    The music module reads the words of what is playing, keeps the room going when the queue empties, and can now be asked onto a stage — by somebody who has the floor.

    أُضيف
    • The words of what is playing, on a page that follows the music. Each line lights up as it is sung; whoever is reading can switch to the whole song at once, for themselves, without changing anything for the server.
    • `/lyrics` puts the same words in a message, with the record they come from. Give it a title and it answers about any song at all — including one nobody is playing.
    • Autoplay. When the queue runs out, the bot looks for something close to the last track and carries on. Off by default, and it stops by itself after twenty tracks nobody asked for.
    • Stage channels. The bot can be asked onto a stage and arrives on the floor rather than in the audience — but only if the person inviting it is speaking. Asked by a listener, it says no.
    تغيّر
    • The invitation asks for Administrator alongside the permissions each module needs, and the site said the opposite. It now says what Discord shows: a module released tomorrow works on a server invited today, and the detail stays visible under the toggle for anyone who prefers to untick it.
  51. 1 September — a fresh coat, everywhere

    Type that closes up as it grows, surfaces with depth, an opening screen with something under the light, and one vocabulary instead of each page inventing its own.

    أُضيف
    • Every module page opens with its own icon beside the title — the same one the sidebar drew a second ago. Forty pages that differed only by a line of text are now recognisable at a glance.
    • Section headings scale with the window rather than jumping once at a fixed width, so a tablet held upright no longer gets the phone's size for no reason.
    تغيّر
    • Headings set tighter as they grow, and titles no longer leave one word alone on their last line.
    • Panels have depth: two soft shadows and a hairline along the top edge instead of one flat drop.
    • The opening screen has a grid under its light. Two glows on an empty page read as a gradient; something for the light to fall on is what makes it a page.
    • Sections are separated by a line that fades at both ends rather than a rule that cuts the page in two.
    • The main button catches light at its top edge and casts a coloured shadow when you point at it.
    • Badges read as labels, not buttons — tinted rather than filled, so they no longer shout louder than the row they annotate.
    • Cards that are links lift under the pointer, empty lists all look alike, tables recede at the header and answer at the row, and a field being typed into is lifted out of the page.
  52. 1 September — buttons you can actually see

    A plain button was filled with the exact colour of the panel behind it. Measured, that is 1.0 to 1: only the label showed. Every control on the site was checked against the contrast standard, and the palette is unchanged.

    تغيّر
    • Every colour pair the interface uses is now measured against the contrast standard on each build, so a palette that drifts one token at a time cannot quietly make something unreadable again.
    أُصلح
    • Buttons with no colour of their own were invisible. They took the panel's colour for their surface and their border alike — “Verify”, “Send a test alert” and every other quiet action floated as a bare word. They now sit a step lighter with a border drawn at the point where a control's boundary becomes visible.
    • Delete buttons read as decoration. A bin with nothing around it looks like an illustration; they now carry the red at their edge and a faint tint behind them, so a destructive action says so before it is pressed.
    • Text in the brand colour could not be read where it mattered most — the active row of the navigation, and every tinted icon chip. It is the same purple, at the lightness where a word can be read. The filled buttons keep the original tone: white on a lighter purple would have failed in the other direction.
    • The same for red text on its own faint tint, which is where a delete button puts it.
  53. 1 September — flags that draw everywhere, and a surface that has depth

    The bot's language picker shows flags again on every platform, the shop presets are named properly, and the whole interface gains the depth a stack of dark rectangles was missing.

    أُضيف
    • Flags in the bot's language setting. They were two letters — the country code, which is how Windows draws a flag emoji — and they are now the same drawn files the site's own language picker uses. Every dropdown in the dashboard can carry one from now on.
    تغيّر
    • Shop presets are named “Shop items” rather than the bare key `shop`, in all sixteen languages, with a line saying what they hold.
    • Panels have depth. Two soft shadows and a hairline along the top edge instead of one flat drop: enough to seat a compartment on the page without turning the interface into a pile of floating boxes.
    • Cards that are links now lift under the pointer. Written once and used everywhere, in place of each list inventing its own — several underlined their title, which is a link's manner while the whole card is the link.
    • Empty lists look alike. Eleven pages had written their own centred paragraph at eleven sizes; there is one now, and every list uses it.
    • Tables recede at the header and answer the pointer at the row, buttons move when pressed, and a field being typed into is lifted out of the page rather than merely outlined.
  54. 1 September — a refusal you can see, a purpose you no longer have to pick

    The marketplace stops asking questions it can answer itself, says clearly what belongs to the author and what everybody else sees, and puts a refusal where it can be read.

    أُضيف
    • A refused preset says so at the top of its page, in the colour of the decision, with the reviewer's reason and what to do about it — instead of a grey line under a long page.
    • A preset waiting to be read says that too, so its author is not left wondering whether anything happened.
    تغيّر
    • The purpose of a preset is now settled by its module wherever that is obvious. Something built from levels is about engagement; from automod, about moderation; from welcome messages, about arrivals. The question is only asked where a module genuinely spans several purposes — an automation can greet, grant a role or ban — and the catalogue's filter no longer depends on everybody classifying their own work correctly.
    • The author's own controls are folded away behind their own heading. Everything above them is what other servers see; “your words, while it waits” used to sit under a published preset as though it were part of the offer.
    • Your proposals are a real list: the module, the installs, the state, and the refusal note where there is one — rather than an underlined title.
    • Cards lift instead of underlining their title on hover, and the whole card opens the preset.
    • The notes explaining what happens next follow the interface's own colours rather than a blue used nowhere else.
    • The section about the questions a preset asks now gives an example: “the channel where the trap sits” is a question, “#general” is your answer to it.
  55. 1 September — sixteen modules can be shared, and none of them shares a member

    Moderation, automod, welcome, economy, the shop, the questions of the day and starboards join the catalogue.

    أُضيف
    • Seven more shareable modules: moderation, automod, welcome messages, the economy's settings, the shop's items, the questions of the day and starboards. Sixteen in total.
    • A shop can be shared as a list of items, and the questions of the day as a list of questions — up to fifty in one preset. Imported questions wait to be approved on your own page, like a question a member proposed.
    • Whole-configuration presets switch their module off on arrival. Moderation, automod, welcome, economy and levels each hold one configuration per server, and there is no single field to leave unticked — so the module itself is turned off until you have seen what you installed.
    تغيّر
    • The catalogue copies configuration and never a person. Anything naming somebody — who proposed a question, whose balance, which moderator — is stripped from every document before it travels, and a guard names the collections about members that no shared module may read.
    • A question arrives without the member who proposed it: it would otherwise land on another server crediting somebody they have never met.
  56. 1 September — four more modules to share, and a form that explains itself

    Custom commands, scheduled messages, role menus and levels can now be published to the catalogue, and the field nobody could read has been rewritten.

    أُضيف
    • Four more shareable modules: custom commands, scheduled messages, role menus and levels. Nine in total.
    • A warning for the modules that replace rather than add. Levels holds one configuration per server, so installing one overwrites what is there — said above the install button rather than discovered after it.
    • Role menus arrive unpublished. A menu people click appearing in a channel before anybody has read it is the same mistake as a rule that bans on install.
    • The submission form is now three numbered steps: what you are sharing, how it is presented, and what happens next.
    تغيّر
    • The question asked of whoever installs a preset is now a question. The field used to arrive pre-filled with the author's own channel name under a label reading “question for a channel”, which read as neither. It starts empty, with the name the author used shown beside it as context — and the page says to write the question, not the answer.
    • Withdrawing a preset has its own block, outlined in red, instead of a grey link lost under the form.
  57. 1 September — the marketplace reads properly

    Raw keys where words belonged, a sidebar that emptied itself on one page, a module picker that threw away what you had typed — and a fresh coat on the catalogue.

    أُضيف
    • The catalogue opens on what it is: a short header, and three numbers — how many configurations, how many installs, how many people wrote them.
    • Cards carry their module's own icon and its purpose across the top, so one is recognisable before it is read.
    • The rail says what each section is carrying — servers, proposals waiting plus reports, faults since the current build — and turns red on the two that ask for a decision.
    تغيّر
    • The summary and description fields on the submission form now show an example of what belongs in them.
    • Choosing another module no longer reloads the page. Every module's list is already there, so switching redraws the choices — and boxes ticked in a list you switched away from are cleared, rather than being published without your knowing.
    أُصلح
    • Untranslated keys on screen. The catalogue printed `catalog.modules.embeds.label` where a module's name belongs, and the submission form printed `trigger_boost` where a rule's trigger belongs. Both are read through the translation that falls back to the module's own name.
    • Every module disappeared from the sidebar on the submission page. The page returned its list of shareable modules under the name the shell uses for the module registry, and a page's data wins over the shell's — so the navigation filtered five strings and found nothing. A guard now refuses any page that replaces a shell key it did not mean to.
  58. 1 September — a catalogue you can search, and four more modules to share

    Search and filters on the catalogue, four more modules that can be shared, and authors who can edit and withdraw their own work.

    أُضيف
    • A catalogue you can actually search. A search box, a sort (most used lately, newest, most installed) and three filters — purpose, module, event — all of them in the URL, so a filtered catalogue is something you can send to somebody.
    • Four more modules can be shared: auto-responses, sticky messages, watches and embed templates, beside automations. Each one describes itself in its own words on the install page.
    • Presets carry a purpose and the events they react to, counted from what is actually published — a filter that offered an event nothing carries would lead to an empty page.
    • Likes, so the catalogue's first ordering is not simply whoever published first.
    • Authors can edit and withdraw their own presets. An edit sends it back to the review queue and the page says so before you start: the published version stays as it is until it has been read again.
    • A floor on what can be published. Slurs and links to sites this bot will not open are refused at the form. It is a floor, not moderation — the review is the moderation — and it is there so the queue is about judgement rather than about filth.
    تغيّر
    • Presets now carry whole documents rather than a rule-shaped payload, so a module joining the catalogue is one entry in a table rather than a change to the marketplace itself.
    • Identifiers are replaced in lists as well as in single fields. Auto-responses hold a list of allowed channels, and a rule that only knew the singular would have let another server's channels travel with a preset.
    • Servers can be managed from there: what each one holds collection by collection, leaving a server, and erasing everything it holds. Two separate actions, because the first is undone by an invitation and the second is not undone at all.
  59. 1 September — a marketplace for configurations

    Servers can propose their automation rules to a catalogue, and install one another's. Every proposal is read by a human before it appears, and nothing about the author's own server travels with it.

    أُضيف
    • A catalogue of configurations, under Marketplace. Each card says what the preset does, who wrote it, how many servers run it — and what it is able to do.
    • Propose your own rules. Choose which automation rules to share, describe them, and send them off. Up to ten rules in one preset.
    • Every channel and role becomes a question. No identifier from the author's server leaves it: the preset asks the installer where things go, and the answers are theirs. It also means a preset cannot secretly point at anything.
    • What a preset can do is read from its own rules, never claimed by its author. One that can warn, time out, kick or ban says so above the install button, in a panel that is hard to miss.
    • The rules are printed in full before you install, in sentences rather than in the shape they are stored in — with the questions it will ask shown in ‹brackets› where they belong.
    • Installed rules arrive switched off. Read them on the Automations page and turn on the ones you want; nobody on your server has read them yet, and some of them ban.
    • A report button, and a list of your own proposals with their state: waiting, published, or refused with the reviewer's note.
    تغيّر
    • Nothing is public until it has been read. A proposal waits in a review queue, and a queue that empties itself is not a review.
    • Once read, a preset's rules can no longer change — only its words. A preset whose contents changed after the review would make the review worthless.
  60. 1 September — two sentences on the Invitations page that were wrong

    The settings panel still described the arrival announcement removed earlier today, and the leaderboard toggle explained itself backwards.

    تغيّر
    • The toggle now says what it does. It reads "Count people who have since left", and the hint spells out both positions: off, an inviter is worth the people they brought who are still here; on, every arrival counts, even those who left the same day — a figure somebody can raise by spamming links.
    • It also says that the rewards are counted on the same figure, which the page had left for you to guess.
    أُصلح
    • The Invitations settings panel promised a setting that no longer exists. It said it decided "where an arrival is announced", while the announcement moved to the Welcome message module earlier today — so anybody reading it went looking for a field that had been removed.
    • Two leftover strings about that channel are gone as well.
  61. 1 September — a sticky message can be an embed

    Sticky messages can now post one of your embed templates instead of plain text, and every picker in the dashboard now offers a way into the builder.

    أُضيف
    • A sticky message can be an embed. Pick one of your templates on the sticky's own page; the plain text stays there as the alternative.
    • A link to the builder, beside every template picker — sticky messages, auto-responses, custom commands and social alerts. The picker is exactly where somebody finds out the template they want does not exist yet, and until now the answer was to go and look for another module.
    • Templates can be scoped to sticky messages, so the picker offers what was written for them plus the universal ones.
    تغيّر
    • A sticky whose template has since been deleted falls back to its text rather than stopping without a word.
    • The stored field is named like the three other modules that render a template. One builder supplies them all: a second one would be a second place to get Discord's limits wrong.
  62. 1 September — a role for inviting, and one welcome instead of two

    Invitations can now hand out a role at the number you choose. And it has stopped announcing arrivals: the Welcome module already does that, better.

    أُضيف
    • A role at a number of invitations. Host at five, whatever you like at twenty — as many rungs as you want, each a role you pick.
    • Every rung reached is granted, not only the highest, and a role already worn is never handed out twice.
    • Counted the same way as the leaderboard on the same page. Rewards counted on arrivals beside a board counted on people who stayed would hand a role to somebody the board says is fifth.
    • Roles out of the bot's reach are marked as such in the picker rather than offered — a reward the bot cannot grant is a promise the server discovers by watching a member not receive it.
    تغيّر
    • Invitations no longer announces arrivals. The Welcome message module already greets whoever joins, with its channel, its template and its card; a second line from here was a second welcome nobody asked for, in a place the Welcome page could not see. The setting is gone, and the counting is untouched.
    • A reward role is kept once earned. The count falls when one of the people somebody brought leaves — which is not theirs to control — and a role removed days later for someone else's departure is a punishment nobody can explain.
    • Two rewards at the same number are refused while the mistake is still on screen: they would be two answers to one question.
  63. 1 September — a message that stays at the bottom, and a server that tells you when a number turns

    Two new modules. One keeps the rules of a busy channel where they can be read; the other watches the server's own counters and speaks up when one of them turns.

    أُضيف
    • Sticky messages. A message that keeps coming back to the bottom of its channel. Discord offers no way to hold one there — being last means being the most recent — so the previous copy is deleted and a new one posted, in that order.
    • It moves after a number of messages, or after a delay, whichever comes first: the count is for busy channels, the clock for quiet ones, where a notice would otherwise sit above a whole day of conversation. Never on every line — a bot that answers each sentence is a bot the channel mutes.
    • One sticky per channel, and no mention in it ever notifies anybody, whatever the text says.
    • Watches. An alert when one of the server's numbers turns: a raid, a wave of departures after an announcement, a channel gone quiet. Messages, arrivals, departures, voice arrivals and sanctions, counted minute by minute.
    • A watch is one sentence: this metric, over this window, above or below this number. A short window sees a raid; a long one sees a mood.
    • Or far from usual, which compares against the server's own past week rather than a number chosen in advance — and says nothing at all until that past exists, because a habit drawn from three numbers is three numbers.
    • A silence after each alert, so a raid does not send one alert a minute for an hour.
    • An alert centre on the page, keeping a month of them — each with the value *and* what was expected instead. “312 messages” is a number to go and look up; “312 against a usual 40” is an alert.
    • A preview that runs the rule over the days the server actually had. A watch that has never fired looks exactly like one that cannot, and this is the only way to tell them apart before trusting it.
    تغيّر
    • The measurements behind the watches are counted in memory and written once a minute, then kept eight days. A write per message would be the very load a server would be watching for.
    • Watches count how many, never which: no message, name or word is kept by them.
  64. 31 August — the music dashboard, and a door that stays shut

    A live player worth looking at, listening statistics, your playlists at a glance — and sources this bot will not open, whatever anyone types.

    أُضيف
    • Adult sites are refused outright. A voice room is a shared space, often with minors in it, and `/play` takes an address. The refusal is by site, before anything is opened, and it is not a setting a server can turn off.
    • Listening statistics: how many tracks the server has played, how many hours that is, and the five most played — over the last ninety days. What a room heard, never what a member listens to.
    • Your playlists at a glance on the module's page, built on Discord with `/playlist` and owned by the server.
    • A player worth looking at: the track in a card of its own, a badge that tells “paused” from “nothing playing”, the queue underneath, and buttons that say what they do.
    تغيّر
    • One DJ section instead of two. A list of DJ roles and a table of permissions asked the same question twice; the table stays.
    • DJ mode with no rule drawn now allows everything. Switching it on used to silence the whole server until somebody ticked a box — a toggle must not be able to lock a room out by being flipped.
    • The publish button no longer shouts. It was the only filled purple button on a page where nothing else was, and read as the page's main action.
    أُصلح
    • Dropdown lists could not be scrolled. A long list made itself taller than the panel, which clipped it — so the rows past the fold were unreachable with no scrollbar to say so. Every page with a long list was affected.
    • Flags in the language selector showed as “FR” on Windows. Windows draws a flag emoji as the two letters of the country code, by design; the selector now carries the language's code and its own name.
  65. 31 August — the music module, in full

    Audio filters, a permanent controller panel, server playlists, thousands of radio stations, DJ permissions action by action, and a live player on the dashboard.

    أُضيف
    • Nine audio filters — bass, nightcore, slowed, vaporwave, karaoke and more — applied *where the track had got to*, not from the beginning. Three minutes in, “apply this filter” must not mean “start again”.
    • A permanent controller panel in a channel of your choosing: one message, edited as the queue moves, with pause, skip, stop, repeat and shuffle. Never reposted, so it does not bury itself.
    • Playlists that belong to the server, not to whoever made them — one that followed its author would leave with them. Everyone can play them; the roles you name can change them.
    • Thousands of radio stations, searched as you type. `/radio` and the name of a station is the whole of it.
    • DJ permissions, action by action. Who may add, who may skip what somebody else added, who may end the evening — six actions, one rule per role. A member's own roles are read before the @everyone base, so you can open everything and still close one action to one role.
    • A live player on the dashboard: what the room is hearing, the queue behind it, and the controls. Managers only — in a voice room, being in it is the permission, and a browser is in no room.
    تغيّر
    • Twelve settings that each change something: announcements (whether, where, silent, with buttons, replacing the previous one, a word when the queue ends), starting volume, repeat on a fresh queue, shuffling a batch as it arrives, how long the bot waits in an empty room, a permanent 24/7 presence, and a skip that becomes a vote from two listeners on.
    أُصلح
    • Long dropdown lists could not be scrolled. A list of forty roles made itself as tall as forty roles, the panel clipped it, and the rows past the fold were unreachable with no scrollbar to say so. Every page with a long list was affected.
  66. 30 August — music, and a room that listens together

    A new Music module: a queue, internet radios, and one rule that no setting overrides — control belongs to the voice room that can hear it.

    أُضيف
    • Music. `/play` `/skip` `/pause` `/stop` `/queue` `/loop`, a queue up to 500 tracks, and internet radios played straight from their stream address. Free, and never part of a paid plan.
    • Control belongs to the room that hears it. Somebody two channels away cannot skip what you are listening to — and no setting changes that. It is the complaint every music bot eventually gets.
    • DJ roles and allowed voice rooms, on the module's page. Leave them empty and everybody can play, anywhere: a module that starts locked is a module nobody hears on the day it is switched on.
    • A line when a track starts, in the channel of your choosing or where the command was typed — and nothing else is ever posted.
    تغيّر
    • A search now looks where the result can also be played. The obvious place answers a search and then refuses every page it returned, so the bot found your track, queued it, and played silence.
    • A link whose site refuses us still plays what it named. The title is read from the site's own public endpoint and the track is found elsewhere — and the reply says so, because a member who names one recording and hears another has to be told.
    أُصلح
    • A track that could not be started said it was playing. Silence looks like a broken bot rather than a refusing source; it now says which it is.
    • The music settings page answered an error on its first visit.
  67. 30 August — finding a command, and a bot that says what is broken

    Commands sorted into nine families and searchable by what they do, a dashboard that tells you which of your settings no longer works, and statistics that finally show voice and the hour of day.

    أُضيف
    • /help is browsable, and searchable by what a command does. Nine families — economy, levels, games, roles, help, channels, moderation, configuration and the general ones — each naming its commands, with a menu to open one. Discord's own picker matches the start of a command's name and nothing else, so 'economy' or 'credits' could never find `balance`: type what you are after in `/help <word>` and the suggestions read the descriptions.
    • Your dashboard says which of your settings no longer works. A card at the top of the overview lists what is configured and out of reach — a deleted channel, a role that has climbed above the bot, a channel BILBI cannot write in. It stays hidden when there is nothing to say, and the same check runs right after you save.
    • The bot names the permissions it was invited without, on the day it arrives. Found later, a missing permission is met module by module, each time as a feature that silently does not work.
    • Statistics can look at a year, not only a month: seven, thirty, ninety or three hundred and sixty-five days.
    • When your server is awake. Messages are counted per hour of your own day, and the busiest hour is named — the number you need to schedule an announcement, an event or a giveaway, and the one no chart could answer before.
    • Voice is measured. Hours spent in voice rooms, who was there and in which rooms. A server whose rooms are full and whose text channels are quiet used to read as dead.
    • A bell for the changelog, in the top bar, with a dot when there is something you have not read.
    تغيّر
    • The shop shows what you hold, and a refusal for want of currency names the way out — your balance, the daily claim, the prices. It was a price list and nothing else, so the one thing you needed in order to use it lived on another command.
    • Every notice BILBI sends in a direct message carries the server it comes from, a colour that says what kind of news it is, and a title of its own. What your team writes gets a field of its own; your own words are never framed.
    • Modmail gives the member two buttons — close this conversation, write to another server — and marks each message as delivered. An open conversation used to swallow everything after the first message with no sign at all.
    • The minimum length of a suggestion is a setting, and now says so.
    أُصلح
    • Modmail's buttons answered 'BILBI did not respond in time'. Discord allows three seconds to acknowledge a button, and the work took longer on a bot present in many servers. The same correction covers the help menu.
    • A changelog note with a long list was refused whole, and the notes queued behind it never went out either.
    • Buying an item whose name carries an emoji. The shop refused the only name a member can see.
    • A server could be missing from the list offered in a direct message, and when it was the only one, the bot answered as though modmail were off everywhere.
    • The Premium page could answer with an internal error for a server whose payment record no longer exists on the provider's side.
  68. 29 August — commands you can find without knowing their name

    /help is sorted into nine families and searches what a command does, and the shop tells you what you hold instead of sending you hunting for the word.

    أُضيف
    • /help is browsable. Nine families — economy, levels, games, roles, help, channels, moderation, configuration and the general ones — each naming its commands, with a menu to open one and read what every command in it does. It used to be one flat wall of fifty-five entries in the order they happened to be written.
    • /help <word> searches what a command does, not only what it is called. Discord's own picker matches the start of a command's name and nothing else: 'economy', 'credits' and 'shop' all find nothing when the command is called `balance`. Type what you are after — the suggestions read the descriptions.
    تغيّر
    • The shop shows what you hold. It was a price list and nothing else, so the one thing you needed in order to use it was on another command, named after a word the picker cannot reach from 'shop'.
    • A refusal for want of currency names the way out: your balance, the daily claim, and the prices. Wherever it happens — buying, betting, sending.
  69. 29 August — the bot's private messages, and a way out of a conversation

    Notices sent in DM now say which server they come from, modmail gives the member two buttons, and the shop accepts the name you can actually see.

    أُضيف
    • Modmail gives the member two buttons: close this conversation, and write to another server. A conversation opened by writing to the bot could not be closed from the same place, and somebody sharing several servers with BILBI had no way to change their mind about which team they were writing to. Closing tells your team in their own thread — a conversation that stops without a word looks like somebody who walked off.
    • The minimum length of a suggestion is a setting, and now says so. The maximum carried an explanation, the minimum did not: a bare number beside an explained one reads like a limit somebody imposed on you, on the very page where it can be changed.
    تغيّر
    • Every notice BILBI sends in a direct message now carries the server it comes from, a colour that says what kind of news it is, and a title of its own. A DM arrives with no channel, no server and no context, from an account a member may have met through three different teams — 'your conversation is closed', signed by nobody, next to a level-up and a refused application.
    • What your team writes gets a field of its own. A closing reason, a refusal motive: that is the part the member came for, and the part somebody else wrote. It is no longer glued onto the end of the standard sentence.
    • Your own words are left alone. A welcome message, a custom command's answer, a voice-channel notice belong to the server that wrote them — framing them would put BILBI's voice on top of yours.
    • Watched sources in the demo server now target accounts that actually publish, measured through the providers themselves rather than picked by fame. A watch on an account posting twice a week teaches nobody anything: you wait, nothing comes, and a quiet account looks exactly like a broken module.
    أُصلح
    • Buying an item whose name carries an emoji. The shop refused the name printed on the item — the only name a member can see. It is now matched as read, and an ambiguous name asks which one rather than picking for you, since money moves.
    • A server could be missing from the list of servers offered in a direct message. When it was the only one, the bot answered as though modmail were switched off everywhere — and the member could not tell those two apart.
  70. 29 August — fourteen days back, and a changelog you can read without joining anything

    A refund in one click, a counting channel that stops punishing people for a smiley, and sixteen error messages that were coming out in French whatever your language.

    أُضيف
    • The lifetime plan finally has its management button. It was hidden from it on the grounds that there is nothing to renew — true of renewal, and of nothing else the portal holds. The invoice, the receipt and the billing details are exactly what somebody who has just paid looks for.
    • A 'never break the count' option for the collective count: nothing sends it back to zero, and there is no turn to take — one person can carry it alone, 67 then 68.
    • This page. Every change, dated, without joining a Discord server to read it.
    تغيّر
    • Counting twice in a row no longer resets anything, whatever the setting. Two people type at once, one loses the race, and a chain of six hundred used to go to zero over something neither of them chose. The message is taken back and its author told why.
    • A number followed by anything still counts. '68 OvO' is how people play — the number, then a face, a word, a cheer — and refusing it cost one server a count of sixty-seven over a smiley.
    • Alert slots are counted per platform, not shared across all seven. Following one streamer, one channel and one feed used to fill a free plan, and adding a single address was refused by a counter nobody had reason to connect to the other two.
    • Channels the bot cannot write in are marked in every picker. A channel it cannot see is the worst of both worlds: the setting is right, the page shows it as right, and nothing ever happens.
    • The verification portal shows itself before you publish it, and the role it hands out now sits on the same tab as the button that needs it. It used to live elsewhere, and nothing said so until publishing was refused — naming a field you could not see.
    أُصلح
    • Sixteen error messages came out in French whatever language you had chosen. Eleven were thrown without a translation key, five named a key no dictionary held, and six form errors had no way to carry one at all.
    • The AutoMod module had no name in French — the page printed the key where the name belongs.
    • A YouTube channel could be refused for being popular. The handle is resolved through the channel's own page, read with a cap sized for a feed: below it MrBeast resolved and Linus Tech Tips did not.
    • The welcome preview reported success while sending nothing. Every check returned silently — right when a member is joining, wrong when somebody has asked to see it — and the one case that spoke came back as an internal error.
    • Error messages were drawn behind the save bar. A refusal explaining why a save had failed was hidden by the bar that had just refused it.
    • The card preview answered 429 while you chose a colour. The page debounced twelve times faster than its own rate limit allowed.
  71. 25 August — two things the site said that were not quite true

    One promise on the home page, one switch that did nothing.

    أُصلح
    • The home page said the bot never asks for Administrator. The invitation genuinely never does — but restoring a backup requires it, and the page did not say so. It does now, in the same breath.
    • Command access no longer shows an on/off switch. It is a permission table, not a feature you turn off, and the catalogue always knew that — the page header did not, so the switch was drawn, clicked, and refused.
  72. 23 August — a repost can be worded differently from a post

    Where a platform tells its events apart, you can now silence some and give the others their own wording.

    أُضيف
    • One block per kind of event, on the platforms that produce more than one. Bluesky separates posts, reposts and replies; Reddit separates link posts from video posts. Switch off what you do not want, and give the rest a wording of its own — leave a box empty and it uses the general one.
    • Your existing filters were carried over. A watch that had ticked two content types keeps announcing exactly those two, without anybody opening its page.
    تغيّر
    • The old multi-select filter is gone. It could silence a repost but never word it differently, and « Kiyo just posted » under every repost is how a channel gets muted.
  73. 23 August — disconnecting a TikTok account works

    It answered with a server error instead.

    أُصلح
    • Disconnecting a linked TikTok account failed. The button was there, the confirmation appeared, and the request came back as an error. The route had been written in the wrong place in the file — above the checks every other route sits behind, which also meant it ran without them.
  74. 23 August — sources you have used are remembered

    Adding the same streamer to a second channel no longer means pasting the same link again.

    أُضيف
    • A menu of sources you have already used, above the source field, on every alert page. Pick one and it fills itself in. It is filled for you: every alert you create adds its source, so the menu is never something you have to build.
    • Remove an entry when it clutters the menu. Only the shortcut goes — every running alert keeps running. Tidying a dropdown should never take a notification off the air.
  75. 23 August — the test alert no longer needs anything to have happened

    It refused to run unless the source had just published. That is the one moment you no longer need it.

    أُصلح
    • « Send a test alert » works whether or not anything was published. It used to need a real item, so a Twitch channel that was offline — which is most of the day — got « nothing readable » instead of a preview. It now sends the real thing when there is one, and a clearly-labelled sample when there is not. The sample says so in its own text, so nobody in the channel mistakes it for a real announcement.
  76. 23 August — the test alert works on every platform now

    It answered « nothing readable » for sources publishing perfectly well.

    أُصلح
    • « Send a test alert » only ever worked on TikTok. It resolved an empty source instead of the one on your screen — TikTok ignores what it is given so it seemed fine, and the other six answered « the source has published nothing readable » for channels publishing daily. It now tests exactly what the page shows.
  77. 23 August — the linked TikTok account shows a name, not a portrait

    A small thing, fixed for a reason worth knowing.

    أُصلح
    • The linked account no longer tries to show a profile picture. TikTok signs those addresses with an expiry — the one that raised this had forty-seven hours left. Keeping it would have meant a broken image two days later, so the panel shows the account name instead, which is the only thing you need to confirm you linked the right one.
  78. 23 August — several TikTok accounts, and the menu that was missing

    Each integration now picks the account it announces, and the list of sources you have used finally shows up.

    أُضيف
    • Link as many TikTok accounts as you need. Each alert picks the one it announces — your own channel and a side project no longer compete for the single slot. Disconnect them one at a time.
    • The menu of sources you have used now appears for everybody. It only filled from alerts created after it shipped, so every server that already had one saw nothing at all. Your existing alerts are now in it.
    تغيّر
    • Linking a second TikTok account used to replace the first in silence — and the alert built on it went quiet with nothing to explain why. That cannot happen now.
  79. 23 August — try an alert before you need it

    You can now send one real alert on demand, instead of finding out your channel was wrong the day it mattered.

    أُضيف
    • « Send a test alert », on every alert page. It takes whatever the source last published and posts it in your channel, exactly as a real alert would — using the wording and mentions currently on screen, not the ones you saved last week. Nothing is stored, so that item still arrives on its turn.
    أُصلح
    • The TikTok page no longer asks for a source. With a linked account there is nothing to type: the account you authorised is the source, and the field was discarding whatever went into it.
    • Checking a TikTok source answered « nothing found » for a perfectly linked account.
  80. 23 August — TikTok alerts are back, on TikTok's own API

    The module returns, and this time it does not depend on anyone else's infrastructure.

    أُضيف
    • TikTok alerts, through TikTok's own connection. Click « Link my TikTok account », authorise on TikTok's page, and your new videos are announced in the channel you choose. Nothing to paste, and BILBI never sees your password.
    • Disconnect whenever you want, from the same panel. Disconnecting deletes the stored authorisation outright.
    تغيّر
    • You can only announce your own account. TikTok lets an application read the account that authorised it and no other. Following another creator is not possible here — nor in any bot that respects TikTok's rules. The module page says so before you set anything up.
    • The old version read TikTok through a feed bridge the host had to run. That is gone: the platform's reliability no longer depends on somebody else's server.
  81. 23 August — write your own alert, or drop the embed entirely

    Social alerts were an embed and nothing else. Now you write the line, and you choose whether there is a card underneath.

    أُضيف
    • Your own wording, with variables. Write `{author} vient de publier : {title}` and the bot fills it in. Mentions work exactly as they do in Discord — put `@here` where you want it and it goes there. Leave the box empty and nothing changes.
    • Plain text instead of an embed. One line, and Discord draws its own preview from the link. Useful when the card is more furniture than information — and it needs no permission to embed.
    • Only the variables a platform can actually fill are offered. `{game}` and `{viewers}` on Twitch and Kick, `{score}` and `{flair}` on Reddit, and `{link}`, `{title}`, `{author}`, `{account}`, `{text}`, `{platform}` everywhere.
    تغيّر
    • Existing alerts keep the embed and the wording they have always had. Nothing moves unless you move it.
  82. 23 August — alerts that arrived blank now say so

    A social alert is an embed. If the bot could not attach one, it sent an empty line instead — and nothing anywhere said so.

    أُضيف
    • The permissions are shown on the page, next to the watch they concern, while you are still looking at it. You no longer find out three days later from a watch that switched itself off.
    أُصلح
    • An alert channel that refuses embeds is now reported. The bot only ever checked that it could write. A channel that takes messages but not embeds swallowed every notification into a near-empty line, for ever, with the watch still shown as healthy. It now stops and tells you which permission is missing.
    • A watch that pings everyone without the permission to do so is reported too. The message went out with the mention inert.
  83. 23 August — no more wall of roles on arrival

    The dashboard no longer flashes a wall of roles before it settles.

    أُصلح
    • Pages with several role or channel pickers no longer unfold on arrival. For a moment the browser was drawing every menu open — every role, every channel, spelled out down the page — before the dashboard replaced them with its own. The command-access page, which carries three menus per command, was several screens tall for that instant. They now start closed.
  84. 23 August — members can propose a question of the day

    Members can finally propose a question of the day — the half of the module that shipped unreachable.

    أُضيف
    • `/qotd pool` — how full the reserve is, and how many you may still add.
    أُصلح
    • The whole “what members may propose” compartment did nothing. The per-member limit and the approval switch were saved, shown and read by nobody: there was no way for a member to propose anything, so no question could ever be waiting and the approval button had nothing to approve. That is now the feature the page describes.
  85. 23 August — reaction menus stop taking back your roles

    Reaction menus stop taking back the role you already had.

    تغيّر
    • A menu that should only ever grant one role at a time still can: choose "one role at a time" in the menu's behaviour, next to "several roles", "only add", "only remove" and "one choice, ever".
    أُصلح
    • A reaction menu no longer removes your other roles. On a menu set to "several roles", clicking a second emoji took the first role away — the mode behaved exactly like the one that allows only one choice. Clicking now adds, clicking the same emoji again still removes, and dropdowns keep working the way they read: what you untick, you lose.
    • Counting and Question of the day now have titles. Both pages opened with an untranslated label where their name should have been.
    • Both also have their own icon, instead of sharing the generic one with each other. Automatic moderation gets its own too, rather than borrowing Moderation's shield.
    • Fifteen error messages are now translated into the other fifteen languages. They had been showing in French to everybody — quota reached, template not found, command not found, and a dozen more.
  86. 23 August — two games: Counting and Question of the day

    Two games for your server: one channel that counts together, one question every morning.

    أُضيف
    • Counting. Pick a channel and your server counts, one number per person, nobody twice in a row. It accepts arithmetic — `40+2` is 42 — keeps the record and the running total, and shows who has counted the most.
    • Saves, which absorb a mistake instead of ending the run. You grant them from the dashboard; the game spends them and never earns them back. A count of four thousand should not die to a typo.
    • A role for whoever breaks the count, taken back after the minutes you choose. Optional, and in practice worn with pride.
    • Question of the day. One question, at the hour you set, in your server's timezone — never twice in a day, even if the bot restarts in between. A thread opens under each one so the answers stay together.
    • Your members fill the reserve. They propose their own questions, up to a quota you control, and nothing goes out publicly before you approve it. Free servers hold thirty questions in reserve, Premium three hundred.
    تغيّر
    • Both modules arrive switched off. Open them from the dashboard, choose a channel, and they start.
  87. 22 August — BILBI has moved house

    BILBI has moved house. You should not have noticed.

    تغيّر
    • The service now runs in a datacentre, not on a machine at home. Same bot, same settings, same levels — but no longer dependent on one flat's power and internet.
    • Daily backups, kept automatically. Restoring is now a matter of minutes rather than of luck.
    أُصلح
    • The status channel now reports from the new machine. If it says everything is fine and it is not, a ticket is still the fastest way to tell us.
  88. 22 August — housekeeping

    Housekeeping, and one thing worth telling you about.

    تغيّر
    • The privacy policy now names our host. It is one of the three things the law asks a service to publish, and it had been blank.
    أُصلح
    • Removing a manager role in the dashboard now offers to save it. The change looked applied and was lost on the next page change.
  89. 22 August — a status board, and two alert platforms step back

    Two alert platforms step back, and the status channel starts writing itself.

    أُضيف
    • A live status board in the status channel. One message, kept current on its own: gateway, database, dashboard, payments and alerts. It reports only what the bot can measure about itself, and says so.
    • A rules page worth reading — six rules, where to go, what happens if you break them, and what is done with your data.
    • This channel. Every deployment gets an entry from now on, written for you rather than lifted from the code.
    تغيّر
    • Reddit alerts move back to “in the works”. Reddit closed self-service API registration and reserves free access to non-commercial use. Rather than ship a module whose key cannot be obtained, it waits. You can still follow a subreddit today: add its feed address to the RSS module.
    • TikTok alerts move back to “in the works” as well. TikTok publishes no monitoring API, so the module always depended on a feed bridge the host has to run. It returns when one is running and proven.
  90. 22 August — first entry

    The first entry. Everything below shipped over the past few days, and this channel starts here.

    أُضيف
    • Command access — decide who may run each of the bot's commands: roles allowed, roles barred, channels, and a switch. In the Moderation group of the dashboard.
    • Backups — a snapshot of your roles, channels and permissions, and a restore that only ever creates or corrects. It never deletes anything.
    • Analytics — messages per day, growth, and retention of newcomers. No message content is ever stored.
    • Economy and Reputation — a currency your members earn, a shop that hands out roles, and a thank-you counter.
    • Two new welcome card layouts — side by side, and a words-only one for when you have a real sentence to write.
    • Guided tours — every module page now explains itself the first time you open it, and the replay button stays.
    تغيّر
    • Levels now count time spent in voice, not only messages.
    • Level imports accept AmariBot and Tatsu as well as MEE6 and Lurkr. Providers this instance holds no key for now say so on the page instead of failing after you click.
    • Every refusal a command gives you is now an embed that says what would have let it through, rather than one grey line.
    أُصلح
    • Emoji and Japanese, Korean or Chinese names now render on cards. They were drawing as empty boxes.
    • Joining a voice hub creates your channel. It never had, on any server — the bot was not being told about voice at all, which also cost voice XP and voice roles.
    • Removing a manager role now offers to save. The change was real, shown on screen, and lost on the next page change.
    • "Surprise me" on the card editor changes the colours. It had been setting nothing at all.
    • Editing a card's title now redraws the preview immediately, instead of after a save and a reload.