aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorclarkzjw <[email protected]>2023-02-21 01:43:24 -0800
committerclarkzjw <[email protected]>2023-02-21 01:43:24 -0800
commit1046a4dd835468ee4855d70ca0a5e6dc6f79cb32 (patch)
tree78d9eee925102930fff52d22a2f5c0d5824df4d4
parentf7ace426c8456a2d226e8ebf7c78ba66eebe0b83 (diff)
downloadswarm2fediverse-1046a4dd835468ee4855d70ca0a5e6dc6f79cb32.tar.gz
add allow_reentry=True to fix job queue exec without return to conversation handler callbacks
-rw-r--r--bot.py24
1 files changed, 18 insertions, 6 deletions
diff --git a/bot.py b/bot.py
index 4402d08..a0a00b3 100644
--- a/bot.py
+++ b/bot.py
@@ -179,6 +179,9 @@ async def media_group_sender(context: CallbackContext):
179 media_id = [] 179 media_id = []
180 chat_id = context.job.data[0].get("chat_id") 180 chat_id = context.job.data[0].get("chat_id")
181 for msg_dict in context.job.data: 181 for msg_dict in context.job.data:
182 if len(media_id) >= 4:
183 print("Cannot attach more than 4 photos")
184 break
182 file = await context.bot.get_file(msg_dict.get("media_id")) 185 file = await context.bot.get_file(msg_dict.get("media_id"))
183 img = io.BytesIO() 186 img = io.BytesIO()
184 await file.download_to_memory(img) 187 await file.download_to_memory(img)
@@ -218,8 +221,6 @@ async def photo(update: Update, context: CallbackContext):
218 "content": status_content, 221 "content": status_content,
219 "chat_id": message.chat_id, 222 "chat_id": message.chat_id,
220 } 223 }
221 global jobname
222 jobname = str(message.media_group_id)
223 jobs = context.job_queue.get_jobs_by_name(str(message.media_group_id)) 224 jobs = context.job_queue.get_jobs_by_name(str(message.media_group_id))
224 if jobs: 225 if jobs:
225 jobs[0].data.append(msg_dict) 226 jobs[0].data.append(msg_dict)
@@ -234,16 +235,25 @@ async def photo(update: Update, context: CallbackContext):
234 img = io.BytesIO() 235 img = io.BytesIO()
235 await file.download_to_memory(img) 236 await file.download_to_memory(img)
236 img.seek(0) 237 img.seek(0)
237 context.user_data["photo"].append(img.read())
238 238
239 await process_location(update, context) 239 media = mastodon_client.media_post(img.read(), mime_type="image/jpeg")
240 mastodon_client.status_update(
241 status=status_content,
242 id=status_id,
243 media_ids=media["id"])
244
245 await update.message.reply_text(text="Done",
246 reply_markup=telegram.ReplyKeyboardMarkup([
247 [telegram.KeyboardButton(text="Check in", request_location=True)],
248 [telegram.KeyboardButton(text="Setting")]]))
240 249
241 250
242async def skip_photo(update: Update, context: ContextTypes.DEFAULT_TYPE): 251async def skip_photo(update: Update, context: ContextTypes.DEFAULT_TYPE):
243 print(context.user_data) 252 print(context.user_data)
244 reply_markup = telegram.ReplyKeyboardRemove()
245 await update.message.reply_text( 253 await update.message.reply_text(
246 text="Done.", reply_markup=reply_markup 254 text="Done.", reply_markup=telegram.ReplyKeyboardMarkup([
255 [telegram.KeyboardButton(text="Check in", request_location=True)],
256 [telegram.KeyboardButton(text="Setting")]])
247 ) 257 )
248 return ConversationHandler.END 258 return ConversationHandler.END
249 259
@@ -254,6 +264,7 @@ def main() -> None:
254 conv_handler = ConversationHandler( 264 conv_handler = ConversationHandler(
255 entry_points=[ 265 entry_points=[
256 CommandHandler("start", start), 266 CommandHandler("start", start),
267 MessageHandler(filters.LOCATION, checkin),
257 ], 268 ],
258 states={ 269 states={
259 LOCATION: [ 270 LOCATION: [
@@ -265,6 +276,7 @@ def main() -> None:
265 }, 276 },
266 fallbacks=[CommandHandler("cancel", cancel)], 277 fallbacks=[CommandHandler("cancel", cancel)],
267 per_message=False, 278 per_message=False,
279 allow_reentry=True,
268 ) 280 )
269 281
270 application.add_handler(conv_handler) 282 application.add_handler(conv_handler)
Powered by cgit v1.2.3 (git 2.41.0)