Bot
import re
import random
from telegram import Update, Bot
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext
# Replace 'YOUR_BOT_TOKEN' with your actual bot token from BotFather
TOKEN = 'YOUR_BOT_TOKEN'
HASHTAG_COOLDOWN = {} # To prevent spamming suggestions
def start(update: Update, context: CallbackContext) -> None:
update.message.reply_text(
"š️ Welcome to Hashtag Helper Bot!\n\n"
"I'll help you manage hashtags in this chat:\n"
"- I'll remind you to add hashtags if your message doesn't have any\n"
"- Use /suggest to get hashtag suggestions\n"
"- Use /generate <text> to get auto-generated hashtags"
)
def suggest_hashtags(update: Update, context: CallbackContext) -> None:
suggestions = [
"#GoodMorning ☀️", "#MotivationMonday šŖ", "#Inspiration ✨",
"#DailyThoughts š", "#LifeHacks š ️", "#FunFact š¤",
"#ProTip š”", "#QuestionOfTheDay ❓", "#ChallengeAccepted š"
]
update.message.reply_text(
"š Popular Hashtag Suggestions:\n\n" +
"\n".join(random.sample(suggestions, 5)) +
"\n\nš” Tip: Combine popular and niche hashtags for better reach!"
)
def generate_hashtags(update: Update, context: CallbackContext) -> None:
if not context.args:
update.message.reply_text("Please provide some text after /generate")
return
text = ' '.join(context.args).lower()
words = re.findall(r'\w+', text)
generated = list(set(['#' + word.capitalize() for word in words if len(word) > 3]))
if not generated:
update.message.reply_text("𤷠Couldn't generate hashtags from that text")
return
update.message.reply_text(
"š Generated Hashtags:\n\n" +
" ".join(generated[:10]) + # Limit to 10 hashtags
"\n\n⚠️ Always check hashtag relevance before posting!"
)
def check_hashtags(update: Update, context: CallbackContext) -> None:
message = update.message
user_id = message.from_user.id
# Ignore messages from channels or other bots
if message.sender_chat or (message.from_user and message.from_user.is_bot):
return
# Check both message text and caption (for media messages)
text = message.text or message.caption or ""
hashtags = re.findall(r'#\w+', text)
# If no hashtags found and message isn't too short
if not hashtags and len(text) > 15:
# Cooldown check (1 reminder per 5 minutes per user)
last_reminder = HASHTAG_COOLDOWN.get(user_id, 0)
if (message.date.timestamp() - last_reminder) > 300:
HASHTAG_COOLDOWN[user_id] = message.date.timestamp()
reply = message.reply_text(
"š Don't forget to add relevant hashtags!\n"
"Use /suggest for ideas or /generate to auto-create hashtags",
quote=False
)
# Delete reminder after 60 seconds
context.job_queue.run_once(
lambda _: reply.delete(),
60,
context=reply.chat_id
)
def main() -> None:
bot = Bot(token=TOKEN)
updater = Updater(bot=bot, use_context=True)
dp = updater.dispatcher
dp.add_handler(CommandHandler("start", start))
dp.add_handler(CommandHandler("suggest", suggest_hashtags))
dp.add_handler(CommandHandler("generate", generate_hashtags))
dp.add_handler(MessageHandler(Filters.all & ~Filters.command, check_hashtags))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
Comments
Post a Comment