From a21b41bea1349c0dbc1bb23b4cccb70ea2e3a00f Mon Sep 17 00:00:00 2001 From: Forodoy Date: Mon, 17 Aug 2026 04:23:34 +0700 Subject: [PATCH 1/8] Create r_arrasio/app.py --- reddit2telegram/channels/r_arrasio/app.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 reddit2telegram/channels/r_arrasio/app.py diff --git a/reddit2telegram/channels/r_arrasio/app.py b/reddit2telegram/channels/r_arrasio/app.py new file mode 100644 index 00000000..de2f5fac --- /dev/null +++ b/reddit2telegram/channels/r_arrasio/app.py @@ -0,0 +1,18 @@ +from reddit2telegram.reddit import Reddit +from reddit2telegram.telegram import Telegram + + +SUBREDDIT = "Arrasio" +CHANNEL = "@Arras_io" + + +def main(): + reddit = Reddit(SUBREDDIT) + telegram = Telegram(CHANNEL) + + for submission in reddit.hot(): + telegram.send_submission(submission) + + +if __name__ == "__main__": + main() \ No newline at end of file From e6d3af4c51db1113959e758b9838a411d8b326af Mon Sep 17 00:00:00 2001 From: Forodoy Date: Mon, 17 Aug 2026 04:25:09 +0700 Subject: [PATCH 2/8] Create tags.txt --- reddit2telegram/channels/r_arrasio/tags.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 reddit2telegram/channels/r_arrasio/tags.txt diff --git a/reddit2telegram/channels/r_arrasio/tags.txt b/reddit2telegram/channels/r_arrasio/tags.txt new file mode 100644 index 00000000..d6609b71 --- /dev/null +++ b/reddit2telegram/channels/r_arrasio/tags.txt @@ -0,0 +1 @@ +#arrasio #arras_io \ No newline at end of file From f5801bb93b9773d2adfeac2a096ef42fca7e39e8 Mon Sep 17 00:00:00 2001 From: Forodoy Date: Mon, 17 Aug 2026 04:25:34 +0700 Subject: [PATCH 3/8] Update tags.txt --- reddit2telegram/channels/r_arrasio/tags.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reddit2telegram/channels/r_arrasio/tags.txt b/reddit2telegram/channels/r_arrasio/tags.txt index d6609b71..54a4f43b 100644 --- a/reddit2telegram/channels/r_arrasio/tags.txt +++ b/reddit2telegram/channels/r_arrasio/tags.txt @@ -1 +1 @@ -#arrasio #arras_io \ No newline at end of file +#arrasio #arras_io #arrasio \ No newline at end of file From e1f2892d815c2fee101d07ef1cc609010ee5e8b9 Mon Sep 17 00:00:00 2001 From: Forodoy Date: Mon, 17 Aug 2026 04:40:05 +0700 Subject: [PATCH 4/8] Update app.py --- reddit2telegram/channels/r_arrasio/app.py | 177 ++++++++++++++++++++-- 1 file changed, 166 insertions(+), 11 deletions(-) diff --git a/reddit2telegram/channels/r_arrasio/app.py b/reddit2telegram/channels/r_arrasio/app.py index de2f5fac..766a6175 100644 --- a/reddit2telegram/channels/r_arrasio/app.py +++ b/reddit2telegram/channels/r_arrasio/app.py @@ -1,18 +1,173 @@ -from reddit2telegram.reddit import Reddit -from reddit2telegram.telegram import Telegram +#encoding:utf-8 +import random +from datetime import datetime +import hashlib -SUBREDDIT = "Arrasio" -CHANNEL = "@Arras_io" +import pymongo +import utils +from utils import SupplyResult +from utils.tech import get_all_public_submodules +from utils.setup import get_config -def main(): - reddit = Reddit(SUBREDDIT) - telegram = Telegram(CHANNEL) - for submission in reddit.hot(): - telegram.send_submission(submission) +SETTING_NAME = 'r2t_promotion_queue' -if __name__ == "__main__": - main() \ No newline at end of file +def update_promotion_order(): + config = get_config() + db = pymongo.MongoClient(host=config['db']['host'])[config['db']['name']] + settings = db['settings'] + first_date_view = db['view_with_first_dates'] + all_submodules = get_all_public_submodules() + all_submodules.remove('reddit2telegram') + submodules_and_dates = dict() + for submodule in all_submodules: + imported = utils.channels_stuff.import_submodule(submodule) + channel = imported.t_channel + first_date_result = first_date_view.find_one({'_id': channel.lower()}) + if first_date_result is None: + continue + submodules_and_dates[submodule] = first_date_result['first_date'] + if settings.find_one({'setting': SETTING_NAME}) is None: + settings.insert_one({ + 'setting': SETTING_NAME, + 'promotion_order': submodules_and_dates, + 'already_promoted': list(), + 'counter': 0 + }) + settings.find_one_and_update( + { + 'setting': SETTING_NAME + }, + { + '$set': + { + 'promotion_order': submodules_and_dates + } + } + ) + + +def what_submodule(): + now = datetime.now() + all_submodules = get_all_public_submodules() + all_submodules.remove('reddit2telegram') + if now.weekday() == 6: + return random.choice(all_submodules) + + config = get_config() + db = pymongo.MongoClient(host=config['db']['host'])[config['db']['name']] + settings = db['settings'] + if settings.find_one({'setting': SETTING_NAME}) is None: + update_promotion_order() + setting_result = settings.find_one({'setting': SETTING_NAME}) + + already_promoted = setting_result['already_promoted'] + promotion_order = setting_result['promotion_order'] + + for submodule in sorted(promotion_order.keys(), key=promotion_order.get, reverse=1): + if (submodule not in already_promoted) and (submodule in all_submodules): + return submodule + + settings.find_one_and_update( + { + 'setting': SETTING_NAME + }, + { + '$inc': { + 'counter': 1 + }, + '$set': { + 'already_promoted': list() + } + } + ) + + +def what_subreddit(submodule_name_to_promte): + submodule_to_promote = utils.channels_stuff.import_submodule(submodule_name_to_promte) + return submodule_to_promote.subreddit + + +def what_channel(submodule_name_to_promte): + submodule_to_promote = utils.channels_stuff.import_submodule(submodule_name_to_promte) + return submodule_to_promote.t_channel + + +def get_tags(submodule_name_to_promte): + tags_string = utils.channels_stuff.get_tags_for_submodule(submodule_name_to_promte) + if not tags_string: + return None + return tags_string.split() + + +def make_nice_submission(submission, r2t, submodule_name_to_promte, extra_ending=None, **kwargs): + tags = get_tags(submodule_name_to_promte) + tags_string = '' + if tags is not None: + if len(tags) > 0: + tags_string = ' '.join(tags) + if extra_ending is None: + extra_ending = '' + submission.title + result = r2t.send_simple(submission, + channel_to_promote=what_channel(submodule_name_to_promte), + date=datetime.utcfromtimestamp(submission.created_utc).strftime('%Y %b %d'), + tags=tags_string, + extra_ending=extra_ending, + text='{title}\n\n{self_text}\n\n{upvotes} upvotes\n/r/{subreddit_name}\n{date}\n{short_link}\nby {channel_to_promote}\n{tags}\n\n{extra_ending}', + other='{title}\n{link}\n\n{upvotes} upvotes\n/r/{subreddit_name}\n{date}\n{short_link}\nby {channel_to_promote}\n{tags}\n\n{extra_ending}', + album='{title}\n{link}\n\n{upvotes} upvotes\n/r/{subreddit_name}\n{date}\n{short_link}\nby {channel_to_promote}\n{tags}\n\n{extra_ending}', + gif='{title}\n\n{upvotes} upvotes\n/r/{subreddit_name}\n{date}\n{short_link}\nby {channel_to_promote}\n{tags}\n\n{extra_ending}', + img='{title}\n\n{upvotes} upvotes\n/r/{subreddit_name}\n{date}\n{short_link}\nby {channel_to_promote}\n{tags}\n\n{extra_ending}', + video='{title}\n\n{upvotes} upvotes\n/r/{subreddit_name}\n{date}\n{short_link}\nby {channel_to_promote}\n{tags}\n\n{extra_ending}', + gallery='{title}\n\n{upvotes} upvotes\n/r/{subreddit_name}\n{date}\n{short_link}\nby {channel_to_promote}\n{tags}\n\n{extra_ending}' + ) + return result + + +submodule_name_to_promte = 'r_arrasio' + +subreddit = 'Arrasio' +t_channel = '@Arras_io' +submissions_ranking = 'top' +submissions_limit = 1000 + + +def send_post(submission, r2t): + now = datetime.now() + today = datetime(now.year, now.month, now.day) + taday_date_string = today.strftime('%Y %b %d') + random_number = abs(int(hashlib.sha1(taday_date_string.encode('utf-8')).hexdigest(), 16)) + + if (now.weekday() == 5) and (now.hour in [0, 23]) and (now.minute == 1): + update_promotion_order() + return SupplyResult.STOP_THIS_SUPPLY + + if now.weekday() == 5: + return SupplyResult.STOP_THIS_SUPPLY + + if (now.weekday() != 5) and ((now.hour == random_number % 24)): + result = make_nice_submission(submission, r2t, submodule_name_to_promte) + if result == SupplyResult.SUCCESSFULLY: + if now.weekday() < 5: + config = get_config() + db = pymongo.MongoClient(host=config['db']['host'])[config['db']['name']] + settings = db['settings'] + settings.find_one_and_update( + { + 'setting': SETTING_NAME + }, + { + '$push': + { + 'already_promoted': submodule_name_to_promte + } + } + ) + return SupplyResult.SUCCESSFULLY + return result + + return SupplyResult.STOP_THIS_SUPPLY \ No newline at end of file From 400f5637a9f1d05d6698ef4a74c0ac1762e59a6d Mon Sep 17 00:00:00 2001 From: Forodoy Date: Mon, 17 Aug 2026 22:22:34 +0700 Subject: [PATCH 5/8] Create _init_.py --- reddit2telegram/channels/r_arrasio/_init_.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 reddit2telegram/channels/r_arrasio/_init_.py diff --git a/reddit2telegram/channels/r_arrasio/_init_.py b/reddit2telegram/channels/r_arrasio/_init_.py new file mode 100644 index 00000000..4287ca86 --- /dev/null +++ b/reddit2telegram/channels/r_arrasio/_init_.py @@ -0,0 +1 @@ +# \ No newline at end of file From 8cc07fae25591aa3cf1a6f4589c3ab3a32e402e8 Mon Sep 17 00:00:00 2001 From: Forodoy Date: Mon, 17 Aug 2026 22:22:48 +0700 Subject: [PATCH 6/8] Update _init_.py --- reddit2telegram/channels/r_arrasio/_init_.py | 1 - 1 file changed, 1 deletion(-) diff --git a/reddit2telegram/channels/r_arrasio/_init_.py b/reddit2telegram/channels/r_arrasio/_init_.py index 4287ca86..e69de29b 100644 --- a/reddit2telegram/channels/r_arrasio/_init_.py +++ b/reddit2telegram/channels/r_arrasio/_init_.py @@ -1 +0,0 @@ -# \ No newline at end of file From ea183310bdf8cccc39ad7af9334760a925b52419 Mon Sep 17 00:00:00 2001 From: Forodoy Date: Wed, 19 Aug 2026 15:24:32 +0700 Subject: [PATCH 7/8] Update app.py --- reddit2telegram/channels/r_arrasio/app.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/reddit2telegram/channels/r_arrasio/app.py b/reddit2telegram/channels/r_arrasio/app.py index 766a6175..b0197023 100644 --- a/reddit2telegram/channels/r_arrasio/app.py +++ b/reddit2telegram/channels/r_arrasio/app.py @@ -42,7 +42,7 @@ def update_promotion_order(): 'setting': SETTING_NAME }, { - '$set': + '$set': { 'promotion_order': submodules_and_dates } @@ -54,7 +54,7 @@ def what_submodule(): now = datetime.now() all_submodules = get_all_public_submodules() all_submodules.remove('reddit2telegram') - if now.weekday() == 6: + if now.weekday() == 6: # if Sunday then random return random.choice(all_submodules) config = get_config() @@ -71,6 +71,7 @@ def what_submodule(): if (submodule not in already_promoted) and (submodule in all_submodules): return submodule + # If every is promoted. settings.find_one_and_update( { 'setting': SETTING_NAME @@ -111,7 +112,7 @@ def make_nice_submission(submission, r2t, submodule_name_to_promte, extra_ending tags_string = ' '.join(tags) if extra_ending is None: extra_ending = '' - submission.title + submission.title # to make it non-lazy result = r2t.send_simple(submission, channel_to_promote=what_channel(submodule_name_to_promte), date=datetime.utcfromtimestamp(submission.created_utc).strftime('%Y %b %d'), @@ -128,10 +129,11 @@ def make_nice_submission(submission, r2t, submodule_name_to_promte, extra_ending return result -submodule_name_to_promte = 'r_arrasio' +submodule_name_to_promte = what_submodule() -subreddit = 'Arrasio' -t_channel = '@Arras_io' + +subreddit = what_subreddit(submodule_name_to_promte) +t_channel = '@reddit2telegram' submissions_ranking = 'top' submissions_limit = 1000 @@ -141,14 +143,14 @@ def send_post(submission, r2t): today = datetime(now.year, now.month, now.day) taday_date_string = today.strftime('%Y %b %d') random_number = abs(int(hashlib.sha1(taday_date_string.encode('utf-8')).hexdigest(), 16)) - + # Twice a week update promotion order if (now.weekday() == 5) and (now.hour in [0, 23]) and (now.minute == 1): update_promotion_order() return SupplyResult.STOP_THIS_SUPPLY - + # If Saturday then no promotion if now.weekday() == 5: return SupplyResult.STOP_THIS_SUPPLY - + # If weekday or Sunday then regular promotion once a day if (now.weekday() != 5) and ((now.hour == random_number % 24)): result = make_nice_submission(submission, r2t, submodule_name_to_promte) if result == SupplyResult.SUCCESSFULLY: @@ -169,5 +171,4 @@ def send_post(submission, r2t): ) return SupplyResult.SUCCESSFULLY return result - - return SupplyResult.STOP_THIS_SUPPLY \ No newline at end of file + return SupplyResult.STOP_THIS_SUPPLY From 03c6a3e6e64481185385407e4f8e8182bcd82666 Mon Sep 17 00:00:00 2001 From: Forodoy Date: Wed, 19 Aug 2026 15:25:10 +0700 Subject: [PATCH 8/8] Update tags.txt --- reddit2telegram/channels/r_arrasio/tags.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reddit2telegram/channels/r_arrasio/tags.txt b/reddit2telegram/channels/r_arrasio/tags.txt index 54a4f43b..18539bb7 100644 --- a/reddit2telegram/channels/r_arrasio/tags.txt +++ b/reddit2telegram/channels/r_arrasio/tags.txt @@ -1 +1 @@ -#arrasio #arras_io #arrasio \ No newline at end of file +#arrasio #arras_io #arrasiogame #arrasgame