Compare commits

..
10 Commits
Author SHA1 Message Date
YoursFunny 18f1f00259 fix docker compose file 2024-03-22 19:46:30 +08:00
YoursFunny 04da6eb3d9 fix reply message 2024-03-22 19:45:26 +08:00
YoursFunny 7a35b06d4e fix channel check 2024-03-22 19:04:30 +08:00
YoursFunny a5ae2321c5 fix regex pattern 2024-03-22 19:02:38 +08:00
YoursFunny d263071946 add assert message 2024-03-22 18:57:59 +08:00
YoursFunny 0491d8c3fc fix pers_data 2024-03-22 18:55:48 +08:00
YoursFunny 3afea136a4 update docker.yml 2024-03-22 18:41:09 +08:00
YoursFunny 87108b2ac8 fix await 2024-03-22 18:41:07 +08:00
YoursFunny 4613e4c825 remove version in compose 2024-03-22 17:56:59 +08:00
YoursFunny eb1016f137 fix typo 2024-03-22 17:49:38 +08:00
5 changed files with 18 additions and 18 deletions
+2
View File
@@ -4,6 +4,8 @@ on:
push:
tags:
- v*
branches:
- master
env:
APP_NAME: telegram-twitter-media-bot
+3 -3
View File
@@ -1,9 +1,9 @@
import logging
import re
import os
import re
BOT_TOKEN = os.getenv("BOT_TOKEN")
ADMIN = os.getenv("ADMIN").split(",")
ADMIN = os.getenv("BOT_ADMIN").split(",")
WEBHOOK = os.getenv("WEBHOOK", False)
if WEBHOOK:
@@ -14,7 +14,7 @@ if WEBHOOK:
WEBHOOK_CERT = os.getenv("WEBHOOK_CERT", "cert/cert.pem")
WEBHOOK_SECRET_TOKEN = os.getenv("WEBHOOK_SECRET_TOKEN")
x_url_regex = re.compile(r"^(?:https?://)(?:www\.|mobile\.|)(x|twitter)\.com/.+/status/(\d+)")
x_url_regex = re.compile(r"^(?:https?://)(?:www\.|mobile\.|)(?:x|twitter)\.com/.+/status/(\d+)")
x_media_regex = re.compile(r"^(?:https?://)(pbs|video)\.twimg\.com/(.*)")
x_tco_regex = re.compile(r"(?:https?://)t\.co/.+$", re.M)
+2 -2
View File
@@ -1,4 +1,3 @@
version: '3.7'
services:
tgxmb: image: yoursfunny/telegram-twitter-media-bot: latest
restart: always
@@ -16,6 +15,7 @@ services:
WEBHOOK_CERT: './cert/cert.pem'
WEBHOOK_SECRET_TOKEN: 'secret-token'
# LOG_LEVEL: 'WARNING'
# volumes:
volumes:
- ./pers_data: /app/pers_data
# - ./cert:/app/cert
container_name: tgxmb
+9 -12
View File
@@ -1,6 +1,6 @@
from aiohttp import ClientSession
from telegram import Update, Chat
from telegram.constants import ParseMode, ChatAction
from telegram.constants import ParseMode, ChatAction, ChatType
from telegram.ext import (
Application,
ApplicationBuilder,
@@ -33,7 +33,7 @@ async def reply_media(update: Update, context: ContextTypes.DEFAULT_TYPE) -> Non
media = list(tweet.pm_media_generator)
message_sent = await update.effective_message.reply_media_group(
media, caption=tweet.message_text,
# reply_to_message_id=update.message.message_id
reply_to_message_id=update.message.message_id
)
if 'forward_channel_id' in context.user_data:
try:
@@ -52,19 +52,20 @@ async def cmd_set_forward_channel(update: Update, context: ContextTypes.DEFAULT_
return
channel = context.args[0]
try:
channel: Chat = context.bot.get_chat(channel)
channel: Chat = await context.bot.get_chat(channel)
except Exception as e:
await update.effective_message.reply_text(str(e))
return
if channel.type != "CHANNEL":
if channel.type != ChatType.CHANNEL:
await update.effective_message.reply_text("That is not a channel.")
return
channel_admin = await channel.get_administrators()
try:
channel_admin = await channel.get_administrators()
except Exception as e:
await update.effective_message.reply_text(str(e) + "\nPlease add the bot to the channel and set as admin")
return
user_bot = filter(lambda x: x.user.id == context.bot.id, channel_admin)
user_bot = next(user_bot, None)
if not user_bot:
await update.effective_message.reply_text("I am not an admin in that channel.")
return
if user_bot.can_post_messages:
context.user_data['forward_channel_id'] = channel.id
await update.effective_message.reply_text("Add successfully.")
@@ -101,7 +102,6 @@ async def post_shutdown(application: Application) -> None:
def main():
defaults = Defaults(parse_mode=ParseMode.HTML, allow_sending_without_reply=True)
persistence = PicklePersistence(filepath='pers_data')
# proxy_url = 'http://127.0.0.1:10809'
application = (ApplicationBuilder()
.token(common.BOT_TOKEN)
.defaults(defaults)
@@ -109,8 +109,6 @@ def main():
.post_init(post_init)
.post_stop(post_stop)
.post_shutdown(post_shutdown)
# .proxy(proxy_url)
# .get_updates_proxy(proxy_url)
.build()
)
@@ -119,7 +117,6 @@ def main():
handlers = [
MessageHandler(filters.Regex(common.x_url_regex) & filters.ChatType.PRIVATE, reply_media),
# MessageHandler(None, reply_media),
InlineQueryHandler(inline_query, common.x_url_regex),
CommandHandler("set_forward_channel", cmd_set_forward_channel),
CommandHandler("remove_forward_channel", cmd_remove_forward_channel),
+2 -1
View File
@@ -7,6 +7,7 @@ from telegram import (
InputMediaPhoto,
InputMediaVideo
)
from common import x_url_regex, x_media_regex, x_tco_regex
twimg_url = 'https://pbs.twimg.com/'
@@ -19,7 +20,7 @@ message_raw_text = """{url}
async def fetch_json(session: ClientSession, url: str) -> dict:
async with session.get(url) as response:
assert response.status == 200
assert response.status == 200, f"Failed to fetch {url}, status code {response.status}"
return await response.json()