{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":464700024,"defaultBranch":"main","name":"crossposter","ownerLogin":"treapster","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-03-01T01:17:13.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/71136698?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1646097434.477213","currentOid":""},"activityList":{"items":[{"before":"4664ab53e054dfd1f357e4ee463e2a7ae985c263","after":"adea179fbd1a1d5a9715c16f8e0172fd1013d0be","ref":"refs/heads/main","pushedAt":"2024-08-04T21:43:42.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"treapster","name":"Denis Revunov","path":"/treapster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/71136698?s=80&v=4"},"commit":{"message":"Fix broken database init","shortMessageHtmlLink":"Fix broken database init"}},{"before":"7038300eef42ec578f05458563156bc11a1d706d","after":"4664ab53e054dfd1f357e4ee463e2a7ae985c263","ref":"refs/heads/main","pushedAt":"2024-04-08T09:31:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"treapster","name":"Denis Revunov","path":"/treapster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/71136698?s=80&v=4"},"commit":{"message":"Sleep 4 secs between messages instead of 3\n\nIn rare occasions when we receive losts of posts at once, the bot hits\nrate limit with \"try after n\" errors from telegram. Instead of actually\nhandling the error and retrying, i hope that longer intervals between\nmessages will help to fully avoid such error.","shortMessageHtmlLink":"Sleep 4 secs between messages instead of 3"}},{"before":"67551841a58294a0dbee206151fd1c901a5aa53d","after":"7038300eef42ec578f05458563156bc11a1d706d","ref":"refs/heads/main","pushedAt":"2024-04-06T20:33:43.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"treapster","name":"Denis Revunov","path":"/treapster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/71136698?s=80&v=4"},"commit":{"message":"Sleep before return even for failed sends\n\nFailed attempts to send a message still use tg api and consume the rate\nlimit, so we should sleep first and only then do early return in case of\nerrors.","shortMessageHtmlLink":"Sleep before return even for failed sends"}},{"before":"4d3021f4e900e78fd33b653b19df7f257b1fbcef","after":"67551841a58294a0dbee206151fd1c901a5aa53d","ref":"refs/heads/main","pushedAt":"2024-04-04T19:19:22.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"treapster","name":"Denis Revunov","path":"/treapster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/71136698?s=80&v=4"},"commit":{"message":"Fix absent ReplyTo","shortMessageHtmlLink":"Fix absent ReplyTo"}},{"before":"9a90808b639fc62eefe4fa184253a6d47c8a10b5","after":"4d3021f4e900e78fd33b653b19df7f257b1fbcef","ref":"refs/heads/main","pushedAt":"2024-04-03T15:00:25.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"treapster","name":"Denis Revunov","path":"/treapster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/71136698?s=80&v=4"},"commit":{"message":"Add /details command","shortMessageHtmlLink":"Add /details command"}},{"before":"233ded4f9758f4d7e2998eae176b703e9f0c6f70","after":"9a90808b639fc62eefe4fa184253a6d47c8a10b5","ref":"refs/heads/main","pushedAt":"2024-03-27T14:56:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"treapster","name":"Denis Revunov","path":"/treapster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/71136698?s=80&v=4"},"commit":{"message":"Handle SIGINT/SIGTERM instead of stdin exit command\n\nMake the first step to running the bot as a service.","shortMessageHtmlLink":"Handle SIGINT/SIGTERM instead of stdin exit command"}},{"before":"1184070c6c5b0a9b9d8248b1aece029b95669be8","after":"233ded4f9758f4d7e2998eae176b703e9f0c6f70","ref":"refs/heads/main","pushedAt":"2024-03-26T12:28:34.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"treapster","name":"Denis Revunov","path":"/treapster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/71136698?s=80&v=4"},"commit":{"message":"Add comments in config","shortMessageHtmlLink":"Add comments in config"}},{"before":"7b5df7021a1ccbfa758439339a0ff7aefd81adad","after":"1184070c6c5b0a9b9d8248b1aece029b95669be8","ref":"refs/heads/main","pushedAt":"2024-03-25T14:21:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"treapster","name":"Denis Revunov","path":"/treapster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/71136698?s=80&v=4"},"commit":{"message":"Sleep between execute requests\n\nWe have to respect the limit of 5 requests/sec, so we should sleep at\nleast 200 ms. I chose 300 to be more conservative.","shortMessageHtmlLink":"Sleep between execute requests"}},{"before":"061fe943edc3f993e04783fa63697dc8ab19931e","after":"7b5df7021a1ccbfa758439339a0ff7aefd81adad","ref":"refs/heads/main","pushedAt":"2024-03-20T07:14:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"treapster","name":"Denis Revunov","path":"/treapster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/71136698?s=80&v=4"},"commit":{"message":"Direct users to another id-getting bot\n\nApparently @username_to_id_bot is not free and also collects database\nof overyone who chats with it. So, we change it to @my_id_bot which\nis free and open source and most likely doesn't collect anything.","shortMessageHtmlLink":"Direct users to another id-getting bot"}},{"before":"3e92fae9c83f840007ee0535d20c3c7ac343e0fa","after":"061fe943edc3f993e04783fa63697dc8ab19931e","ref":"refs/heads/main","pushedAt":"2024-03-19T05:05:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"treapster","name":"Denis Revunov","path":"/treapster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/71136698?s=80&v=4"},"commit":{"message":"Fix typo","shortMessageHtmlLink":"Fix typo"}},{"before":"a981c2fcaf1233e13f0d6bf9d1ad2b113e241e17","after":"3e92fae9c83f840007ee0535d20c3c7ac343e0fa","ref":"refs/heads/main","pushedAt":"2024-03-18T21:11:41.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"treapster","name":"Denis Revunov","path":"/treapster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/71136698?s=80&v=4"},"commit":{"message":"Add private mode","shortMessageHtmlLink":"Add private mode"}},{"before":"abbc5abf7c022210fb330550a077cb23d08388e8","after":"a981c2fcaf1233e13f0d6bf9d1ad2b113e241e17","ref":"refs/heads/main","pushedAt":"2024-03-17T11:16:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"treapster","name":"Denis Revunov","path":"/treapster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/71136698?s=80&v=4"},"commit":{"message":"Support inline links with proper symbol counting\n\nInline links in vk format are expressions like [urlOrId|text]. While\nthey can be trivially matched with regex and replaced with ,\nthere is a caveat that we need to stay within telegram message length\nlimit by splitting messages, and to avoid splitting them without\nneccesity we have to count symbols excluding the URLs in inline links.\nThis commit implements such logic and replaces vk links with html tags\nwhich will be parsed by telegram. Here we also move html.EscapeString\ncall to be after we counted rendered characters, which should guarantee\nthat we count everything properly and only split messages when their\nwould-be rendered length is in fact above limit.","shortMessageHtmlLink":"Support inline links with proper symbol counting"}},{"before":"9c1f837624e92d11a753b8025e4c596e60d2e9aa","after":"abbc5abf7c022210fb330550a077cb23d08388e8","ref":"refs/heads/main","pushedAt":"2024-03-16T07:27:00.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"treapster","name":"Denis Revunov","path":"/treapster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/71136698?s=80&v=4"},"commit":{"message":"Log execute errors","shortMessageHtmlLink":"Log execute errors"}},{"before":"a0410749898aabd8e33fdd2d201859f73df2899b","after":"9c1f837624e92d11a753b8025e4c596e60d2e9aa","ref":"refs/heads/main","pushedAt":"2024-03-13T23:28:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"treapster","name":"Denis Revunov","path":"/treapster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/71136698?s=80&v=4"},"commit":{"message":"GPL => AGPL\n\n*Diligently pretending someone cares*","shortMessageHtmlLink":"GPL => AGPL"}},{"before":"b6574249b861575f4afaa53553fa7d73eb0aa846","after":"a0410749898aabd8e33fdd2d201859f73df2899b","ref":"refs/heads/main","pushedAt":"2024-03-13T23:05:12.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"treapster","name":"Denis Revunov","path":"/treapster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/71136698?s=80&v=4"},"commit":{"message":"Better help message","shortMessageHtmlLink":"Better help message"}},{"before":"818ab899550a0165f9e82f2d439a3f03b7d94db7","after":"b6574249b861575f4afaa53553fa7d73eb0aa846","ref":"refs/heads/main","pushedAt":"2024-03-11T18:55:17.000Z","pushType":"push","commitsCount":9,"pusher":{"login":"treapster","name":"Denis Revunov","path":"/treapster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/71136698?s=80&v=4"},"commit":{"message":"Simplify expression","shortMessageHtmlLink":"Simplify expression"}},{"before":"87083c488c1a288b0f647bd152d85cfa7b7d24b7","after":"818ab899550a0165f9e82f2d439a3f03b7d94db7","ref":"refs/heads/main","pushedAt":"2023-12-15T14:20:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"treapster","name":"Denis Revunov","path":"/treapster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/71136698?s=80&v=4"},"commit":{"message":"Escape post text\n\nBecause of html parse mode, characters like <, > and etc.\nmust be escaped. Otherwise we get errors from telegram api.","shortMessageHtmlLink":"Escape post text"}},{"before":"b2935e922614116454992d5581217c01643e6962","after":"87083c488c1a288b0f647bd152d85cfa7b7d24b7","ref":"refs/heads/main","pushedAt":"2023-12-09T23:42:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"treapster","name":"Denis Revunov","path":"/treapster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/71136698?s=80&v=4"},"commit":{"message":"Tell user how to stop the bot","shortMessageHtmlLink":"Tell user how to stop the bot"}},{"before":"502e2a8f3c55a9f32cbd891119738cad3997ec27","after":"b2935e922614116454992d5581217c01643e6962","ref":"refs/heads/main","pushedAt":"2023-12-09T12:21:50.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"treapster","name":"Denis Revunov","path":"/treapster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/71136698?s=80&v=4"},"commit":{"message":"Make UpdatePeriod mandatory in config, add comment\n\nExplicit is better than implicit, innit?","shortMessageHtmlLink":"Make UpdatePeriod mandatory in config, add comment"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0wNFQyMTo0Mzo0Mi4wMDAwMDBazwAAAASRecX9","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0wNFQyMTo0Mzo0Mi4wMDAwMDBazwAAAASRecX9","endCursor":"Y3Vyc29yOnYyOpK7MjAyMy0xMi0wOVQxMjoyMTo1MC4wMDAwMDBazwAAAAPGDwl0"}},"title":"Activity ยท treapster/crossposter"}