Covert Cove v61.09 change log:
1) Added a display name variable that's kept in memory.
• It is fetched when a bot starts to name unnamed chats. Now it is also stored, but it doesn't need to be permanent since it would duplicate the bot name system config in most cases. The bot name can be edited in the admin panel, but this one is meant to always match the bot's actual name.
2) When multiple Covert Cove bots are present in a group or channel, and a user replies to a bot's message with a command, the other bots will now ignore it.
• If multiple CC bots share a log channel, and a user in one bot reports a message, replying to the message with a command won't cause the other bots to send a message saying they couldn't find that message anymore.
• #1 is used here.
3) The cmd@bot info is now only present at the top of /help if it is used outside of a bot's private chat.
4) Modified the way entity shifting handles commands so that cmd@bot instances don't scramble entity positions.
5) Modified the 'full panel' help menu to align its construction with the regular help menu's.
6) Fixed an issue where bots couldn't find cached messages in log channels that had only author signatures enabled instead of full profiles.
7) Nudged the version number.
1) Added a display name variable that's kept in memory.
• It is fetched when a bot starts to name unnamed chats. Now it is also stored, but it doesn't need to be permanent since it would duplicate the bot name system config in most cases. The bot name can be edited in the admin panel, but this one is meant to always match the bot's actual name.
2) When multiple Covert Cove bots are present in a group or channel, and a user replies to a bot's message with a command, the other bots will now ignore it.
• If multiple CC bots share a log channel, and a user in one bot reports a message, replying to the message with a command won't cause the other bots to send a message saying they couldn't find that message anymore.
• #1 is used here.
3) The cmd@bot info is now only present at the top of /help if it is used outside of a bot's private chat.
4) Modified the way entity shifting handles commands so that cmd@bot instances don't scramble entity positions.
5) Modified the 'full panel' help menu to align its construction with the regular help menu's.
6) Fixed an issue where bots couldn't find cached messages in log channels that had only author signatures enabled instead of full profiles.
7) Nudged the version number.
Covert Cove v61.1 change log:
1) System toggle management has been rewritten to utilize the db modification context everything else uses.
• Instead of overwriting ~80 rows every time a toggle is pressed, it now seeks the specific toggle and only touches that.
2) Added inputmedia support for links.
3) Polls can now contain link objects.
4) Updated the bot API to 10.1.
5) The number of characters in text no longer affects a user's spam tracker, but line breaks have had their weight doubled.
6) Fixed an error where the text & entity splitter for long messages was returning the word text for each piece when there were no entities to split.
• Premium users can send messages that are 8,192 characters long. They are sent as two messages, but cached as one. This is not new, but it was broken when there were no entities.
7) Added a very aggressive timer and error tracker that catches base exceptions during aenter and releases the dB lock.
• Bots should no longer very rarely get partially stuck for seemingly no reason.
8) When a user deletes their own message or media group, it will always delete their sent copy too regardless of the bot's setting.
9) Nudged the version number.
1) System toggle management has been rewritten to utilize the db modification context everything else uses.
• Instead of overwriting ~80 rows every time a toggle is pressed, it now seeks the specific toggle and only touches that.
2) Added inputmedia support for links.
3) Polls can now contain link objects.
4) Updated the bot API to 10.1.
5) The number of characters in text no longer affects a user's spam tracker, but line breaks have had their weight doubled.
6) Fixed an error where the text & entity splitter for long messages was returning the word text for each piece when there were no entities to split.
• Premium users can send messages that are 8,192 characters long. They are sent as two messages, but cached as one. This is not new, but it was broken when there were no entities.
7) Added a very aggressive timer and error tracker that catches base exceptions during aenter and releases the dB lock.
• Bots should no longer very rarely get partially stuck for seemingly no reason.
8) When a user deletes their own message or media group, it will always delete their sent copy too regardless of the bot's setting.
9) Nudged the version number.
Covert Cove v61.11 change log:
⚠️ The queuing process has been heavily overhauled to fix some potential bugs with rate limiting. This version is not compatible with older builds. If you have things queued for some reason, wait for the queues to empty before updating to this version or your bot will not start.
1) Fixed a huge oversight where private admin topic reporting could cancel sending to some recipients if one of them threw an error since sending the report to everyone was queued in one action.
• Each report copy being sent gets its own queue item now.
2) Queued objects now reference chat IDs for destinations instead of user IDs, which fixes a potential bug where a bot's relay group could drop messages if it somehow got rate limited.
3) Queue items no longer accept None for destination IDs.
4) Queue items no longer accept User classes to extract the user's ID as the method's destination.
5) Fixed an oversight where if multiple users hit a rate limit and deletions were queued, since None was set as a destination chat id for them, deletions would not trigger for those users until there were no more rate limited users and the remaining items with no chat destination were flushed back to the other queues.
• This is a bit of an edge case but now it's fixed.
6) Fixed an oversight where internal queue IDs weren't being passed to the rate limit queue for the item that triggered the rate limit, causing it to be dropped because it was sent to the rate limit queue with missing info.
7) The coroutine callers that interface with the bot API now pass the queue priority and ID of the item being processed to the... it's really complicated and you probably don't care anyway.
• 63 instances of this needed to be patched in for all the different pebbles that can queue things for the API to do.
8) The rate limit queue now preserves the queue IDs of things that were passed to it when handing them back to the other queues.
9) User objects are no longer passed to pebbles for queuing API things. Instead, only what's needed is extracted and normalized so nothing relies on a User class.
10) Deletions are now queued with a destination chat ID in their queue item so that rate limiting can catch them properly.
11) Queue insertions into any of the queues now requires a chat ID.
• 247 of these needed to be modified.
12) User objects are no longer included in any part of the API queuing process.
13) Fixed an oversight where fixing #6 caused the mock rate limit used for testing to requeue itself infinitely and never allow the user to leave the fake rate limit.
14) Removed all but one line of the aggressive logging from v61.1 #7 because the underlying issue is caught now and doesn't need to be tracked with obnoxious event logging. If it happens in any bot the dB will recover and throw an exception instead of freezing up the bot.
15) Nudged the version number.
⚠️ The queuing process has been heavily overhauled to fix some potential bugs with rate limiting. This version is not compatible with older builds. If you have things queued for some reason, wait for the queues to empty before updating to this version or your bot will not start.
1) Fixed a huge oversight where private admin topic reporting could cancel sending to some recipients if one of them threw an error since sending the report to everyone was queued in one action.
• Each report copy being sent gets its own queue item now.
2) Queued objects now reference chat IDs for destinations instead of user IDs, which fixes a potential bug where a bot's relay group could drop messages if it somehow got rate limited.
3) Queue items no longer accept None for destination IDs.
4) Queue items no longer accept User classes to extract the user's ID as the method's destination.
5) Fixed an oversight where if multiple users hit a rate limit and deletions were queued, since None was set as a destination chat id for them, deletions would not trigger for those users until there were no more rate limited users and the remaining items with no chat destination were flushed back to the other queues.
• This is a bit of an edge case but now it's fixed.
6) Fixed an oversight where internal queue IDs weren't being passed to the rate limit queue for the item that triggered the rate limit, causing it to be dropped because it was sent to the rate limit queue with missing info.
7) The coroutine callers that interface with the bot API now pass the queue priority and ID of the item being processed to the... it's really complicated and you probably don't care anyway.
• 63 instances of this needed to be patched in for all the different pebbles that can queue things for the API to do.
8) The rate limit queue now preserves the queue IDs of things that were passed to it when handing them back to the other queues.
9) User objects are no longer passed to pebbles for queuing API things. Instead, only what's needed is extracted and normalized so nothing relies on a User class.
10) Deletions are now queued with a destination chat ID in their queue item so that rate limiting can catch them properly.
11) Queue insertions into any of the queues now requires a chat ID.
• 247 of these needed to be modified.
12) User objects are no longer included in any part of the API queuing process.
13) Fixed an oversight where fixing #6 caused the mock rate limit used for testing to requeue itself infinitely and never allow the user to leave the fake rate limit.
14) Removed all but one line of the aggressive logging from v61.1 #7 because the underlying issue is caught now and doesn't need to be tracked with obnoxious event logging. If it happens in any bot the dB will recover and throw an exception instead of freezing up the bot.
15) Nudged the version number.
Covert Cove v61.111 change log:
1) Fixed a goofy error where inline queries were trying to fetch a chat ID instead of using the querying user's ID.
2) Fixed another goofy error where inline callbacks for join requests were using the tag regular callbacks used to close them, which didn't belong there and wasn't being watched for.
3) Tickled the version number.
1) Fixed a goofy error where inline queries were trying to fetch a chat ID instead of using the querying user's ID.
2) Fixed another goofy error where inline callbacks for join requests were using the tag regular callbacks used to close them, which didn't belong there and wasn't being watched for.
3) Tickled the version number.
Covert Cove v61.112 change log:
1) Fixed an error where a typo could cause queue priority to be set to None instead of an integer when sending media groups to a bot's relay group.
2) Tickled the version number.
1) Fixed an error where a typo could cause queue priority to be set to None instead of an integer when sending media groups to a bot's relay group.
2) Tickled the version number.
Covert Cove v61.12 change log:
1) Corrected an oversight that allowed custom filter phrases to be duplicated if the case didn't exactly match.
• The case is normalized for triggers, so this could cause some confusing behavior with multiple punishment types assigned to the same phrase chosen at random.
2) Custom filter entries that are duplicates with mixed cases will be deleted when a bot starts, leaving only the first one that was configured.
• If you configured a filter for 'rAwr' and later 'raWr' and 'raWR', the last two will be deleted.
3) Case will continue to be preserved when a custom filter is configured, as the fetch verification during creation now ignores the case of the phrase, but deletions will require the exact case sensitive phrase.
• This is to stop duplicates from being configured from this point onward but at the same time prevent an error where ignoring case for deletions too would fail because you can't use collate on a deletion query.
4) Attempting to delete invalid things from a database table now returns nothing instead of raising a KeyError since the key not existing was the point.
• This can't happen under normal circumstances, it only happened while testing auto cleanup of duplicate mixed case filter phrases because trying to use collate returned nothing and it was obnoxious.
5) Nudged the version number.
1) Corrected an oversight that allowed custom filter phrases to be duplicated if the case didn't exactly match.
• The case is normalized for triggers, so this could cause some confusing behavior with multiple punishment types assigned to the same phrase chosen at random.
2) Custom filter entries that are duplicates with mixed cases will be deleted when a bot starts, leaving only the first one that was configured.
• If you configured a filter for 'rAwr' and later 'raWr' and 'raWR', the last two will be deleted.
3) Case will continue to be preserved when a custom filter is configured, as the fetch verification during creation now ignores the case of the phrase, but deletions will require the exact case sensitive phrase.
• This is to stop duplicates from being configured from this point onward but at the same time prevent an error where ignoring case for deletions too would fail because you can't use collate on a deletion query.
4) Attempting to delete invalid things from a database table now returns nothing instead of raising a KeyError since the key not existing was the point.
• This can't happen under normal circumstances, it only happened while testing auto cleanup of duplicate mixed case filter phrases because trying to use collate returned nothing and it was obnoxious.
5) Nudged the version number.
Covert Cove v61.13 change log:
1) Added a cache prop for staff IDs when staff create system messages using 'say' commands or their admin chat topic.
2) Removed an unused variable from the internal cache ID assignment thingy.
3) Staff can now edit their own 'say' commands by editing the message they used to send it to change what the message says instead of having to delete the old one and send a new one to fix it.
• The new message must also be a 'say' command, however the command that's used can be switched. E.g. a modsay can be edited into an adminsay if the staff member is also an admin.
• Since logs are handled through the bot's STDOUT stream, the system message edit cannot be logged.
4) Staff can now edit their messages in a bot's private chat 'admin chat' topic.
• Using /info on admin chat messages still won't work. That's on purpose.
5) Rewrote the way staff 'say' commands are constructed and handled, and added a pipeline for editing them.
6) Added a helper function to the cache for fetching the ID of the message's owner under different conditions as one call instead of testing all the conditions every time it's needed.
• The lookup is backwards compatible with each bot's existing cache.
7) The sender's staff 'say' commands are no longer deleted in a bot's relay group because they can be used to edit the message.
8) Fixed an oversight where the poll channel's username was being used for cache mappings and lookups instead of its ID.
9) Fixed an oversight where the rate limit queue would have inserted an item with the poll channel's username but rate limited its chat ID if it got rate limited for some reason, which would have been broken.
• Deletions were queued with the channel's ID as the destination, but the confusion was caused by chan_id (its username) vs chat_id and the API accepting both. For rate limit and queue tracking it can't be mixed, so the chat_id is now used while the chan_id remains for link formatting.
10) Consolidated all of the cache lookup conditions into one call that should cover everything no matter which chat type it's called from, eliminating a weird wasteful lookup hierarchy thing.
11) Removed a bunch of unused legacy stuff from the cache lookup process for reply mappings.
12) Fixed an error where a condition would check if the poll channel existed rather than whether or not the bot was a member of it before constructing the user's poll.
• All of these poll related issues are being found from trying to normalize cache lookups for staff system messages.
• This didn't break when sending polls from a bot not in the poll channel because there was another condition in the actual sender the constructed poll is passed to that stopped it if the bot wasn't there. This will now also stop the poll from being built.
• This is also the reason why the poll pebble refund thing had to be built in a prior update from forever ago when the condition above caught a poll that couldn't be sent. This was supposed to be the real fix but that worked too.
• Derp.
13) Edited some error texts to be more friendly.
14) Removed the cache lookup from the message editing process during the actual editing, it's redundant and unnecessary.
• Instead, the sender's ID is passed along since it was already verified.
15) Deletions no longer look up the sender from the cache mappings for each message in a batch queued for deletion because, with one exception, there's no reason that messages in a batch of deletions should ever have different senders, so this is very wasteful.
16) Nudged the version number.
1) Added a cache prop for staff IDs when staff create system messages using 'say' commands or their admin chat topic.
2) Removed an unused variable from the internal cache ID assignment thingy.
3) Staff can now edit their own 'say' commands by editing the message they used to send it to change what the message says instead of having to delete the old one and send a new one to fix it.
• The new message must also be a 'say' command, however the command that's used can be switched. E.g. a modsay can be edited into an adminsay if the staff member is also an admin.
• Since logs are handled through the bot's STDOUT stream, the system message edit cannot be logged.
4) Staff can now edit their messages in a bot's private chat 'admin chat' topic.
• Using /info on admin chat messages still won't work. That's on purpose.
5) Rewrote the way staff 'say' commands are constructed and handled, and added a pipeline for editing them.
6) Added a helper function to the cache for fetching the ID of the message's owner under different conditions as one call instead of testing all the conditions every time it's needed.
• The lookup is backwards compatible with each bot's existing cache.
7) The sender's staff 'say' commands are no longer deleted in a bot's relay group because they can be used to edit the message.
8) Fixed an oversight where the poll channel's username was being used for cache mappings and lookups instead of its ID.
9) Fixed an oversight where the rate limit queue would have inserted an item with the poll channel's username but rate limited its chat ID if it got rate limited for some reason, which would have been broken.
• Deletions were queued with the channel's ID as the destination, but the confusion was caused by chan_id (its username) vs chat_id and the API accepting both. For rate limit and queue tracking it can't be mixed, so the chat_id is now used while the chan_id remains for link formatting.
10) Consolidated all of the cache lookup conditions into one call that should cover everything no matter which chat type it's called from, eliminating a weird wasteful lookup hierarchy thing.
11) Removed a bunch of unused legacy stuff from the cache lookup process for reply mappings.
12) Fixed an error where a condition would check if the poll channel existed rather than whether or not the bot was a member of it before constructing the user's poll.
• All of these poll related issues are being found from trying to normalize cache lookups for staff system messages.
• This didn't break when sending polls from a bot not in the poll channel because there was another condition in the actual sender the constructed poll is passed to that stopped it if the bot wasn't there. This will now also stop the poll from being built.
• This is also the reason why the poll pebble refund thing had to be built in a prior update from forever ago when the condition above caught a poll that couldn't be sent. This was supposed to be the real fix but that worked too.
• Derp.
13) Edited some error texts to be more friendly.
14) Removed the cache lookup from the message editing process during the actual editing, it's redundant and unnecessary.
• Instead, the sender's ID is passed along since it was already verified.
15) Deletions no longer look up the sender from the cache mappings for each message in a batch queued for deletion because, with one exception, there's no reason that messages in a batch of deletions should ever have different senders, so this is very wasteful.
16) Nudged the version number.
Covert Cove v61.14 change log:
1) Commented out all error logging and timeout handling from the database script.
• It's not needed anymore. The timeouts were caused by modification contexts not being equipped to handle key errors because some decorators were rewritten to cut back on dB calls and while their fallbacks expected users to sometimes not exist, when that's tripped under aenter it doesn't aexit. It was overlooked and assumed to be a variety of different mystery things, so a variety of different logging methods to catch the (purposeful) errors and release the lock after waiting 15 seconds were implemented over time.
• The entire issue was a giant derp.
• The actual error itself was normal and purposely raised there. There was never anything to debug, which is why I couldn't find anything wrong. The real issue was that that type of error wasn't handled properly while it was locked. Now it is.
• No more 15 second wait when it happens, no more asyncio task tracking and timeout handlers, no more task cancellations when it takes too long, etc. Raise immediately and clean up.
• Really it's the fault of the users who somehow manage to do things in bots before sending /start.
• Derp.
2) Nudged the version number.
1) Commented out all error logging and timeout handling from the database script.
• It's not needed anymore. The timeouts were caused by modification contexts not being equipped to handle key errors because some decorators were rewritten to cut back on dB calls and while their fallbacks expected users to sometimes not exist, when that's tripped under aenter it doesn't aexit. It was overlooked and assumed to be a variety of different mystery things, so a variety of different logging methods to catch the (purposeful) errors and release the lock after waiting 15 seconds were implemented over time.
• The entire issue was a giant derp.
• The actual error itself was normal and purposely raised there. There was never anything to debug, which is why I couldn't find anything wrong. The real issue was that that type of error wasn't handled properly while it was locked. Now it is.
• No more 15 second wait when it happens, no more asyncio task tracking and timeout handlers, no more task cancellations when it takes too long, etc. Raise immediately and clean up.
• Really it's the fault of the users who somehow manage to do things in bots before sending /start.
• Derp.
2) Nudged the version number.
Covert Cove v61.141 change log:
1) Fixed an error where listing custom filters was sending timedelta objects from tempban and shadowban filters to a string converter because of an oversight when switching to fetch them from the already parsed custom filters in memory instead of fetching them from the database a while back.
2) Tickled the version number.
1) Fixed an error where listing custom filters was sending timedelta objects from tempban and shadowban filters to a string converter because of an oversight when switching to fetch them from the already parsed custom filters in memory instead of fetching them from the database a while back.
2) Tickled the version number.
Covert Cove v62 change log:
Rich messages are now supported, allowing bots to relay messages with up to 32768 characters and 50 media attachments in a single message.
1) Updated the bot API to version 10.2.
2) Built a dedicated rich text generator that will take any input, whether it's a rich message or a regular message that's larger than the standard 4,096 limit, and spit out a rich message constructed in blocks.
• Fully supporting this required building a class that deals with dozens of new imports.
• Doing this in blocks preserves text as-is, eliminating the requirement for special formatting with HTML or markdown that will cause stupid formatting mistakes if users input certain things.
• It is fully compatible with custom filtering, fwd & quote headers, user & chat restrictions (e.g. for media), etc.
• Signing, tripcoding, etc the entire thing or individual blocks will be added in a future update.
• Deletions only log that it was a rich message due to the difficulty of extracting any relevant information from one.
3) Added rich messages to the allowed message types in Covert Cove.
• Rich messages are spam scored as an empty text message since each one "weighs" the same on the API no matter how much stuff is packed into it.
4) Added rich messages to the types of messages that can be disabled under admin relay settings.
5) Added support and handling for the editing of rich messages.
6) Premium users who send regular messages above the 4,096 character limit will now have their message sent as a single rich message with preserved formatting instead of two separate messages cached as one.
• All formatting is preserved when this happens.
7) Fixed an accidental shadowing of vars() in the /math command.
8) Added voice notes to the supported InputMedia types.
9) Command outputs will now send a rich message if the output is too large for a regular message.
• e.g. /bans, /help, etc
10) Admins can disable a user's ability to send rich messages via the /rich command.
11) Admins in a bot's private chat 'admin chat' topic can send rich messages to each other and edit them.
12) Added a user and system toggle prop for rich message restriction tracking, and a user prop for voice note restriction tracking.
13) Added inline query user restriction handling for a user's rich message restriction.
14) The /dump command now sends a rich message to prevent sending multiple messages when the json is long.
15) Logging is now done with rich messages.
16) Log messages that go out to multiple users when a bot has private chat topics enabled are now much faster.
• The 0.1 second of sleep between each log message going to any destination has been removed because they all get dumped into the non-relay queue anyway.
17) Added voice and rich message restriction stats to user /info.
18) Users can now be restricted from sending voice messages with /voice.
19) Set the voice message permission in the chat permissions for a bot's relay group to sync with user restrictions, decoupling it from the "media" umbrella.
• Via permission sync, if a user is restricted from sending voice notes in a bot's private chat, they will be restricted from sending them in its relay group chat too.
20) Added voice message restriction management to a user's inline record.
21) Bumped the version number.
Rich messages are now supported, allowing bots to relay messages with up to 32768 characters and 50 media attachments in a single message.
1) Updated the bot API to version 10.2.
2) Built a dedicated rich text generator that will take any input, whether it's a rich message or a regular message that's larger than the standard 4,096 limit, and spit out a rich message constructed in blocks.
• Fully supporting this required building a class that deals with dozens of new imports.
• Doing this in blocks preserves text as-is, eliminating the requirement for special formatting with HTML or markdown that will cause stupid formatting mistakes if users input certain things.
• It is fully compatible with custom filtering, fwd & quote headers, user & chat restrictions (e.g. for media), etc.
• Signing, tripcoding, etc the entire thing or individual blocks will be added in a future update.
• Deletions only log that it was a rich message due to the difficulty of extracting any relevant information from one.
3) Added rich messages to the allowed message types in Covert Cove.
• Rich messages are spam scored as an empty text message since each one "weighs" the same on the API no matter how much stuff is packed into it.
4) Added rich messages to the types of messages that can be disabled under admin relay settings.
5) Added support and handling for the editing of rich messages.
6) Premium users who send regular messages above the 4,096 character limit will now have their message sent as a single rich message with preserved formatting instead of two separate messages cached as one.
• All formatting is preserved when this happens.
7) Fixed an accidental shadowing of vars() in the /math command.
8) Added voice notes to the supported InputMedia types.
9) Command outputs will now send a rich message if the output is too large for a regular message.
• e.g. /bans, /help, etc
10) Admins can disable a user's ability to send rich messages via the /rich command.
11) Admins in a bot's private chat 'admin chat' topic can send rich messages to each other and edit them.
12) Added a user and system toggle prop for rich message restriction tracking, and a user prop for voice note restriction tracking.
13) Added inline query user restriction handling for a user's rich message restriction.
14) The /dump command now sends a rich message to prevent sending multiple messages when the json is long.
15) Logging is now done with rich messages.
16) Log messages that go out to multiple users when a bot has private chat topics enabled are now much faster.
• The 0.1 second of sleep between each log message going to any destination has been removed because they all get dumped into the non-relay queue anyway.
17) Added voice and rich message restriction stats to user /info.
18) Users can now be restricted from sending voice messages with /voice.
19) Set the voice message permission in the chat permissions for a bot's relay group to sync with user restrictions, decoupling it from the "media" umbrella.
• Via permission sync, if a user is restricted from sending voice notes in a bot's private chat, they will be restricted from sending them in its relay group chat too.
20) Added voice message restriction management to a user's inline record.
21) Bumped the version number.
Covert Cove v62.001 change log:
1) Fixed output formatting for /bans and other commands that list things so that line breaks don't disappear anymore.
2) Added a note about rich message formatting to the top of the formatting help panel.
3) Tickled rhe version number.
1) Fixed output formatting for /bans and other commands that list things so that line breaks don't disappear anymore.
2) Added a note about rich message formatting to the top of the formatting help panel.
3) Tickled rhe version number.
Covert Cove v62.01 change log:
1) Each individual rich message block can be signed, tripcoded, etc.
• Yes, by starting every block, table cell, caption, etc with /s, /t, etc you can sign every block, every cell, every caption, etc.
• Persistent tripcodes will add a tripcode header to the top of the rich message when it is sent.
• Signing of any type is not considered if the rich message is forwarded.
• Sign, tripcode, etc limits still apply.
• All other commands in rich messages will be ignored.
2) Added notes to the formatting help panel letting users know they can edit the sign commands in and out of messages to sign or unsign an already sent message.
• This has been a feature for a long while now.
3) Nudged the version number.
1) Each individual rich message block can be signed, tripcoded, etc.
• Yes, by starting every block, table cell, caption, etc with /s, /t, etc you can sign every block, every cell, every caption, etc.
• Persistent tripcodes will add a tripcode header to the top of the rich message when it is sent.
• Signing of any type is not considered if the rich message is forwarded.
• Sign, tripcode, etc limits still apply.
• All other commands in rich messages will be ignored.
2) Added notes to the formatting help panel letting users know they can edit the sign commands in and out of messages to sign or unsign an already sent message.
• This has been a feature for a long while now.
3) Nudged the version number.
Covert Cove v62.011 change log:
1) Unsquished the instructions on the /help menu.
2) Tickled the version number.
1) Unsquished the instructions on the /help menu.
2) Tickled the version number.
Covert Cove v62.012 change log:
1) Log messages that are short no longer send as rich messages to resolve formatting issues where desktop clients, especially mac, add a bunch of empty space to rich messages that makes them take up more room for no reason.
2) Tickled the version number.
1) Log messages that are short no longer send as rich messages to resolve formatting issues where desktop clients, especially mac, add a bunch of empty space to rich messages that makes them take up more room for no reason.
2) Tickled the version number.
Covert Cove v62.013 change log:
1) Fixed an error where forwarding rich messages to a bot's relay group was broken.
2) Tickled the version number.
1) Fixed an error where forwarding rich messages to a bot's relay group was broken.
2) Tickled the version number.
Covert Cove v62.014 change log:
1) Added shutdown trigger logging when a non-Hub shutdown occurs so the Hub can fetch the shutdown reason from a bot's log file when an unexpected shutdown occurs.
2) Tickled the version number.
1) Added shutdown trigger logging when a non-Hub shutdown occurs so the Hub can fetch the shutdown reason from a bot's log file when an unexpected shutdown occurs.
2) Tickled the version number.
Covert Cove v62.015 change log:
1) fixed an error where some types of inline messages weren't being inserted into the edit kwargs.
2) Fixed an error where markup wasn't being applied to certain types of inline messages.
3) Tickled the version number.
1) fixed an error where some types of inline messages weren't being inserted into the edit kwargs.
2) Fixed an error where markup wasn't being applied to certain types of inline messages.
3) Tickled the version number.
Covert Cove v62.02 change log:
1) The instruction message for a bot's initial inline query has been changed.
2) If a user starts an inline query with a bot and they're ranked admin or above, pressing the instruction message will now send it with a button attached for each inline command type, with the exception of sticker searches because they do not require an inline command.
• Pressing any of the buttons will insert the corresponding inline command into the text input, fetch results, and remove any confusion around how to use inline mode.
• If this is done in a channel, pressing one of the buttons will prompt the user to select a chat to send the query to because it can't be automatically inserted into the channel's text input.
• This is Telegram's restriction, not mine.
• As a reminder, if you do this in the bot's private chat all of the users are going to see the result, but they will not see any of the attached buttons.
• This is not filtered because an admin might want to do it on purpose.
3) Nudged the version number.
1) The instruction message for a bot's initial inline query has been changed.
2) If a user starts an inline query with a bot and they're ranked admin or above, pressing the instruction message will now send it with a button attached for each inline command type, with the exception of sticker searches because they do not require an inline command.
• Pressing any of the buttons will insert the corresponding inline command into the text input, fetch results, and remove any confusion around how to use inline mode.
• If this is done in a channel, pressing one of the buttons will prompt the user to select a chat to send the query to because it can't be automatically inserted into the channel's text input.
• This is Telegram's restriction, not mine.
• As a reminder, if you do this in the bot's private chat all of the users are going to see the result, but they will not see any of the attached buttons.
• This is not filtered because an admin might want to do it on purpose.
3) Nudged the version number.
Covert Cove v62.021 change log:
1) Fixed an error where inline message entities were being shown as HTML tags when a button on a user's record was pressed.
2) Tickled the version number.
1) Fixed an error where inline message entities were being shown as HTML tags when a button on a user's record was pressed.
2) Tickled the version number.
Covert Cove v62.03 change log:
1) Reversed the logic from user exclusion from a bot's private chat topics to user inclusion instead.
2) The system config key for private chat topic exclusions has been deleted.
3) A system config key for private chat topic inclusions has been added.
4) The default for new user joins when a bot's private chat has topics enabled is to leave topics disabled. Users have to opt in via their settings if they want to set topics, instead of including them by default.
5) All users who were not active in a bot within the last 60 days (before the user toggle was added and defaulted to on) have their topics setting switched off, to align with the newer default.
6) Users who were active within the last 60 days and kept the toggle enabled (it only showed up if the bot supported private chat topics) will populate the system config key for private chat topic inclusions.
• This is what's used to manage topics for users, inverse of how it previously worked with everyone but the users in the exclusions being counted.
7) New user joins no longer get added to a private topic exclusion config in order to opt them out by default. Now that it goes by opt ins, it does nothing instead of steadily growing a bigger and bigger list of users to exclude as more users join a bot.
• Bots that don't support topics in their private chat are unaffected functionally, but their databases still had to be updated in case the bot's owner decided to turn that on sometime in the BotFather miniapp.
8) Nudged the version number.
1) Reversed the logic from user exclusion from a bot's private chat topics to user inclusion instead.
2) The system config key for private chat topic exclusions has been deleted.
3) A system config key for private chat topic inclusions has been added.
4) The default for new user joins when a bot's private chat has topics enabled is to leave topics disabled. Users have to opt in via their settings if they want to set topics, instead of including them by default.
5) All users who were not active in a bot within the last 60 days (before the user toggle was added and defaulted to on) have their topics setting switched off, to align with the newer default.
6) Users who were active within the last 60 days and kept the toggle enabled (it only showed up if the bot supported private chat topics) will populate the system config key for private chat topic inclusions.
• This is what's used to manage topics for users, inverse of how it previously worked with everyone but the users in the exclusions being counted.
7) New user joins no longer get added to a private topic exclusion config in order to opt them out by default. Now that it goes by opt ins, it does nothing instead of steadily growing a bigger and bigger list of users to exclude as more users join a bot.
• Bots that don't support topics in their private chat are unaffected functionally, but their databases still had to be updated in case the bot's owner decided to turn that on sometime in the BotFather miniapp.
8) Nudged the version number.