Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
4006CEMChBproject/FinalWork.py
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
169 lines (160 sloc)
7.13 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## | |
#import getpass | |
#getpass.getpass("pass") | |
## | |
import discord | |
import asyncio | |
import requests | |
import json | |
import urllib.parse | |
from discord.ext import commands | |
import time | |
from discord.ext.commands import Bot | |
import smtplib | |
import sqlite3 | |
#from chatterbot import ChatBot | |
#from chatterbot.trainers import ListTrainer | |
#import os | |
########################################## | |
client = discord.Client() | |
client_command = commands | |
@client.event | |
async def on_ready(): | |
print('Logged in as') | |
print(client.user.name) | |
print(client.user.id) | |
print('------') | |
########################################## | |
@client.event | |
async def on_message(message): | |
content = message.content | |
channel = message.channel | |
UserRequest = message.content.lower() | |
userId = message.author.id | |
userName = message.author.name | |
timestamp = message.timestamp | |
strtimestapm = str(message.timestamp) | |
#_Final_U_INFO = ("#User Name: "+userName+" #User ID: "+userId+" #User's Message: "+content) | |
aa = str("#User Name: "+userName+" #User ID: "+userId+" #Content: "+content+" #Timestamp:"+ strtimestapm) | |
########################################## | |
if UserRequest == "help" or UserRequest == "!help": | |
await client.send_message(channel,"For getting news ,please use '!news' command.___________ ") | |
#For sending e-mail please use '!sendemail'command => command '!mymail' => command'!mypass' => command'!receiver' => command '!subject' => command '!content'.MAKE SURE THAT YOU ARE SENDING FROM gmail.com ACCOUNT,OTHERWISE YOU CANNOT SEND ANY EMAIL CURRENTLY.")#For chatting with just write something I will respond.") | |
#await client.send_message(channel,userId)This and next lines of code is for giving user ID and name on discord respectively,of course if user want.However I have not added this option. | |
#await client.send_message(channel, "<@%s>" % (userId)) | |
#print(userId) | |
#print("@"+userName) | |
########################################## | |
elif message.content.lower() == '!sendemail': | |
if message.content.lower().startswith('!mymail'): | |
mymail_ = message.content | |
if message.content.lower().startswith('!mypass'): | |
mymailpass_ = message.content | |
if message.content.lower().startswith('!receiver'): | |
receiver_ = message.content | |
if message.content.lower().startswith('!subject'): | |
subject_ = message.content | |
if message.content.lower().startswith('!content'): | |
Mcontent_ = message.content | |
def send_email(subject_, Mcontent_): | |
try: | |
server = smtplib.SMTP('smtp.gmail.com:587') | |
server.ehlo() | |
server.starttls() | |
server.login(mymail_,mymailpass_) | |
message = 'Subject: {}\n\n{}'.format(subject_, Mcontent_) | |
server.sendmail(receiver_,receiver_ , message) | |
server.quit() | |
print("Email sent!") | |
#await client.send_message(channel,"Email sent!") | |
except: | |
print("Email failed to send.") | |
#await client.send_message(channel,"Email failed to send.") | |
#THIS COMMNAD DID NOT WORKED ,ALTHOUGH I REALLY TRIED TO INCLUD THIS FUNCTION ON MY CHATBOT ASWELL. | |
########################################## | |
elif message.content.lower().startswith('!news'): | |
oldUserRequest1 = message.content.lower() | |
UserRequest1 = oldUserRequest1.replace('!news', '')#to remove '!news' from the keyword | |
content1 = message.content | |
encoded = urllib.parse.quote(UserRequest1) | |
apiAdd2 = "https://newsapi.org/v2/everything?" | |
keywords2 = 'q='+ encoded | |
apikey = "&apikey=9430b58b162f4318bf862402d40a634d" | |
url2 = apiAdd2 + keywords2 + apikey | |
try: | |
jsonData2 = requests.get(url2).json() | |
except: | |
print("The link is not established!") | |
await client.send_message(channel,"The link is not established!") | |
print(url2) | |
subject__ = userName+"'s message" | |
def send_email(subject_, Mcontent_): | |
server = smtplib.SMTP('smtp.gmail.com:587') | |
server.ehlo() | |
server.starttls() | |
server.login('chbotd2@gmail.com','kGP9Z5E1ZiEJsLA') | |
message = 'Subject: {}\n\n{}'.format(subject__, Mcontent_) | |
if userName == "ChatBot-D2":#I did not want to send bot messages to the Email address. | |
pass | |
#if message.content.lower().startswith('!sendemail'):#line 113 and 118.AttributeError: 'str' object has no attribute 'content' | |
#pass | |
else: | |
server.sendmail('chbotd2@gmail.com','chbotd2@gmail.com' , message) | |
server.quit() | |
send_email(subject__,aa) | |
for i in range(3):#ACTUALLTY THERE ARE MORE THAN 3 NEWS MOSTLY ,BUT I DID NOT WANT TO SEND ALL OF THE PROVIDED DATA. | |
_a_ = jsonData2['articles'][i]['author'] | |
_b_ = jsonData2['articles'][i]['title'] | |
_c_ = jsonData2['articles'][i]['description'] | |
_d_ = jsonData2['articles'][i]['url'] | |
#_e_ = jsonData2['articles'][i]['urlToImage']FOR SENDING POSSIBLE PICTURES OF NEWS TO THE USER. | |
_g_ = jsonData2['articles'][i]['publishedAt'] | |
#_h_ = jsonData2['articles'][i]['content'] CONTENT OF THE NEWS. | |
await client.send_message(channel,_a_) | |
await client.send_message(channel,_b_) | |
await client.send_message(channel,_c_) | |
await client.send_message(channel,_d_) | |
#await client.send_message(channel,_e_) | |
await client.send_message(channel,_g_) | |
#await client.send_message(channel,_h_) | |
await client.send_message(channel,"________________________________________________________") | |
i +=1 | |
########################################## | |
subject__ = userName+"'s message" | |
def send_email(subject_, Mcontent_):#I DID COPY THE CODE AGAIN BECAUSE PERVIOUS ONE WAS FOR NEWS COMMAND ONLY. | |
server = smtplib.SMTP('smtp.gmail.com:587') | |
server.ehlo() | |
server.starttls() | |
server.login('chbotd2@gmail.com','kGP9Z5E1ZiEJsLA') | |
message = 'Subject: {}\n\n{}'.format(subject__, Mcontent_) | |
if userName == "ChatBot-D2": | |
pass | |
#if message.content.lower().startswith('!sendemail'):#.AttributeError: 'str' object has no attribute 'content' | |
#pass | |
else: | |
server.sendmail('chbotd2@gmail.com','chbotd2@gmail.com' , message) | |
server.quit() | |
send_email(subject__,aa) | |
#FOR SHOWING ON TERMINAL | |
print("UserName: @"+userName) | |
print("UserID: "+userId) | |
print("Message time: "+strtimestapm) | |
print("User's message: "+content) | |
print("__________________") | |
conn = sqlite3.connect('UrINFO.db') | |
c = conn.cursor() | |
########################################## | |
def create_table(): | |
c.execute("CREATE TABLE IF NOT EXISTS stuffToPlot(UserName TEXT , UserID Real, Message TEXT, Time REAL)") | |
def dynamic_data_entry(): | |
UserName = userName | |
UserID = userId | |
Message = content | |
Time = strtimestapm | |
c.execute("INSERT INTO stuffToPlot (UserName, UserID, Message, Time) VALUES (?, ?, ?, ? )",(UserName, UserID, Message, Time)) | |
conn.commit() | |
create_table() | |
dynamic_data_entry() | |
########################################## | |
client.run('NTE1OTE0MTYzMDA0ODk5MzI4.Dtsb3g.Kyp-_mqX9W--kGP9Z5E1ZiEJsLA') | |
########################################## |