main.go 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683
  1. package main
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "io/ioutil"
  6. "math/rand"
  7. "os"
  8. "runtime"
  9. "runtime/debug"
  10. "sort"
  11. "strings"
  12. "time"
  13. "github.com/bashery/botline/oop"
  14. "github.com/panjf2000/ants"
  15. "github.com/bashery/botline/hashmap"
  16. talkservice "github.com/bashery/linethrift"
  17. )
  18. func main() {
  19. if len(os.Args) < 1 {
  20. fmt.Println("do not forget arguement")
  21. os.Exit(1)
  22. }
  23. defer ants.Release()
  24. defer oop.PanicOnly()
  25. debug.SetGCPercent(500)
  26. cpu = runtime.NumCPU()
  27. jsonFile, err := os.Open(DATABASE)
  28. if err != nil {
  29. fmt.Println(err)
  30. }
  31. byteValue, _ := ioutil.ReadAll(jsonFile)
  32. json.Unmarshal(byteValue, &Data)
  33. IPServer = fmt.Sprintf("%v", GetIP())
  34. fmt.Println("\n_Started Login_:")
  35. go gracefulShutdown()
  36. for no, tok := range Data.Authoken {
  37. time.Sleep(250 * time.Millisecond)
  38. sort := rand.Intn(9999-1000) + 1000
  39. app := fmt.Sprintf("ANDROID\t11.6.1\tAndroid OS\t7.1.%v", sort)
  40. mids := strings.Split(tok, ":")
  41. mid := mids[0]
  42. var ua = "Line/11.6.1"
  43. cl, err := oop.CreateNewLogin(tok, no, mid, app, ua, HostName[0])
  44. if err == nil {
  45. fmt.Println("\n\n ↳ DisplayName : " + cl.Namebot + "\n ↳ Mid : " + cl.MID + "\n ↳ AppName : " + cl.AppName + "\n ↳ UserAgent : " + cl.UserAgent + "\n ↳ Bots No: " + fmt.Sprintf("%v", no+1))
  46. ClientBot = append(ClientBot, cl)
  47. ClientMid[cl.MID] = cl
  48. Squadlist = append(Squadlist, cl.MID)
  49. cl.RemoveLeterSelling()
  50. } else {
  51. rs := err.Error()
  52. if strings.Contains(rs, "INTERNAL_ERROR") || strings.Contains(rs, "AUTHENTICATION_FAILED") {
  53. fmt.Println("\n ↳ Status : Freez" + "\n ↳ Mid : " + mid + "\n ↳ Bots No: " + fmt.Sprintf("%v", no+1))
  54. cl.MID = mid
  55. cl.Limited = true
  56. } else {
  57. logs := fmt.Sprintf("\n\n▪︎ No: %v ERROR: %s", no+1, err)
  58. fmt.Println(logs)
  59. }
  60. }
  61. }
  62. ab := ` ________
  63. _._ | D7OM |
  64. .' '. | BOTS |
  65. / //\\\ \ |______|
  66. ( ( -\- ) ) |
  67. '-\_=_/-' /)
  68. .-'\ /'-. (|/
  69. / '-' \ / /
  70. | \__ __/_/\/ /|
  71. | |\ / \ /
  72. \ \ \ '-'
  73. "\/\ ;
  74. |/|\ |
  75. | {} |
  76. | |
  77. | |
  78. |_______|
  79. | | |
  80. \ | /
  81. /=|=\
  82. (_/T\_)
  83. `
  84. abc := "\n\n** GO D7OM Bots **"
  85. fmt.Println(string(ColorCyan), ab, string(ColorReset))
  86. fmt.Println(abc)
  87. for m := range oop.HashToMap(oop.GetBlock) {
  88. if !InArray2(Squadlist, m) {
  89. oop.GetBlock.Del(m)
  90. }
  91. }
  92. ch := make(chan int, len(ClientBot))
  93. if len(ClientBot) != 0 {
  94. acl := len(ClientBot)
  95. for x := 0; x < acl; x++ {
  96. cc := x
  97. cla := ClientBot[cc]
  98. runtime.Gosched()
  99. go RunBot(cla, ch)
  100. }
  101. list := append([]*oop.Account{}, ClientBot...)
  102. sort.Slice(list, func(i, j int) bool {
  103. return list[i].KickCount < list[j].KickCount
  104. })
  105. for i, cl := range list {
  106. kk := i * 30
  107. cl.KickPoint = kk
  108. ko := i * 10
  109. cl.CustomPoint = ko
  110. }
  111. if oop.IsFriends(ClientBot[0], MAKERS[0]) == false {
  112. ClientBot[0].FindAndAddContactsByMid(MAKERS[0])
  113. }
  114. ClientBot[0].SendMessage(MAKERS[0], "Im fetcher.")
  115. Resprem()
  116. for i := range ClientBot {
  117. for _, x := range Squadlist {
  118. if !InArray2(ClientBot[i].Squads, x) && x != ClientBot[i].MID {
  119. ClientBot[i].Squads = append(ClientBot[i].Squads, x)
  120. }
  121. }
  122. }
  123. go func() {
  124. for {
  125. autoset()
  126. time.Sleep(3 * time.Second)
  127. }
  128. }()
  129. for v := range ch {
  130. if v == 69 {
  131. break
  132. }
  133. }
  134. fmt.Println("__GOOD_LUCK__")
  135. }
  136. }
  137. func BackSeave() {
  138. fmt.Println("start Backup Data *__*")
  139. TimeBackup = time.Time{}
  140. MsSname = Data.SnameBack
  141. MsRname = Data.RnameBack
  142. MsgRespon = Data.ResponBack
  143. if len(Data.TimeBanBack) != 0 {
  144. now := time.Now()
  145. for a := range Data.TimeBanBack {
  146. if InArray2(Squadlist, a) {
  147. tims := Data.TimeBanBack[a]
  148. if now.Sub(tims) < 24*time.Hour {
  149. self := GetKorban(a)
  150. if !oop.InArrayCl(oop.KickBans, self) {
  151. oop.KickBans = append(oop.KickBans, self)
  152. self.TimeBan = tims
  153. }
  154. self.Limited = true
  155. if _, ok := oop.GetBlock.Get(self.MID); !ok {
  156. oop.GetBlock.Set(self.MID, tims)
  157. }
  158. }
  159. }
  160. }
  161. }
  162. if len(Data.CreatorBack) != 0 {
  163. for _, i := range Data.CreatorBack {
  164. UserBot.AddCreator(i)
  165. }
  166. }
  167. if len(Data.SellerBack) != 0 {
  168. for _, i := range Data.SellerBack {
  169. UserBot.AddSeller(i)
  170. }
  171. }
  172. if len(Data.BuyerBack) != 0 {
  173. for _, i := range Data.BuyerBack {
  174. UserBot.AddBuyer(i)
  175. }
  176. }
  177. if len(Data.OwnerBack) != 0 {
  178. for _, i := range Data.OwnerBack {
  179. UserBot.AddOwner(i)
  180. }
  181. }
  182. if len(Data.MasterBack) != 0 {
  183. for _, i := range Data.MasterBack {
  184. UserBot.AddMaster(i)
  185. }
  186. }
  187. if len(Data.AdminBack) != 0 {
  188. for _, i := range Data.AdminBack {
  189. UserBot.AddAdmin(i)
  190. }
  191. }
  192. if len(Data.BotBack) != 0 {
  193. for _, i := range Data.BotBack {
  194. UserBot.AddBot(i)
  195. }
  196. }
  197. if len(Data.ProkickBack) != 0 {
  198. for _, to := range Data.ProkickBack {
  199. Room := oop.GetRoom(to)
  200. Room.ProKick = true
  201. }
  202. }
  203. if len(Data.ProCancelBack) != 0 {
  204. for _, to := range Data.ProCancelBack {
  205. Room := oop.GetRoom(to)
  206. Room.ProCancel = true
  207. }
  208. }
  209. if len(Data.ProInviteBack) != 0 {
  210. for _, to := range Data.ProInviteBack {
  211. Room := oop.GetRoom(to)
  212. Room.ProInvite = true
  213. }
  214. }
  215. if len(Data.ProQrBack) != 0 {
  216. for _, to := range Data.ProQrBack {
  217. Room := oop.GetRoom(to)
  218. Room.ProQr = true
  219. }
  220. }
  221. if len(Data.ProjoinBack) != 0 {
  222. for _, to := range Data.ProjoinBack {
  223. Room := oop.GetRoom(to)
  224. Room.ProJoin = true
  225. }
  226. }
  227. if len(Data.AnnunceBack) != 0 {
  228. for _, to := range Data.AnnunceBack {
  229. Room := oop.GetRoom(to)
  230. Room.Announce = true
  231. }
  232. }
  233. if len(Data.GadminBack) != 0 {
  234. for to := range Data.GadminBack {
  235. Room := oop.GetRoom(to)
  236. if len(Data.GadminBack[to]) != 0 {
  237. for _, user := range Data.GadminBack[to] {
  238. if !InArray2(Room.Gadmin, user) {
  239. Room.Gadmin = append(Room.Gadmin, user)
  240. }
  241. }
  242. }
  243. }
  244. }
  245. if len(Data.GownerBack) != 0 {
  246. for to := range Data.GownerBack {
  247. Room := oop.GetRoom(to)
  248. if len(Data.GownerBack[to]) != 0 {
  249. for _, user := range Data.GownerBack[to] {
  250. if !InArray2(Room.Gowner, user) {
  251. Room.Gowner = append(Room.Gowner, user)
  252. }
  253. }
  254. }
  255. }
  256. }
  257. if len(Data.GbanBack) != 0 {
  258. for to := range Data.GbanBack {
  259. Room := oop.GetRoom(to)
  260. if len(Data.GbanBack[to]) != 0 {
  261. for _, user := range Data.GbanBack[to] {
  262. if MemUser(to, user) {
  263. if !InArray2(Room.Gban, user) {
  264. Room.Gban = append(Room.Gban, user)
  265. }
  266. }
  267. }
  268. }
  269. }
  270. }
  271. if len(Data.BanBack) != 0 {
  272. for _, user := range Data.BanBack {
  273. Banned.AddBan(user)
  274. }
  275. }
  276. if len(Data.FuckBack) != 0 {
  277. for _, user := range Data.FuckBack {
  278. Banned.AddFuck(user)
  279. }
  280. }
  281. if len(Data.MuteBack) != 0 {
  282. for _, user := range Data.MuteBack {
  283. Banned.AddMute(user)
  284. }
  285. }
  286. TimeSave = time.Now()
  287. fmt.Println("done Backup Data *__*")
  288. }
  289. func autoset() {
  290. defer panicHandle("autoset")
  291. now := time.Now()
  292. for _, room := range oop.SquadRoom {
  293. if !room.Fight.IsZero() {
  294. if now.Sub(room.Fight) >= 3*time.Second {
  295. if AutoPro {
  296. room.AutoBro()
  297. }
  298. room.Fight = time.Time{}
  299. var cll *oop.Account
  300. if len(room.Client) != 0 {
  301. cll = room.Client[0]
  302. name, mem, pending := cll.GetChatList(room.Id)
  303. room.Name = name
  304. room.Reset()
  305. sort.Slice(room.Ava, func(i, j int) bool {
  306. return room.Ava[i].Client.KickPoint < room.Ava[j].Client.KickPoint
  307. })
  308. sort.Slice(room.HaveClient, func(i, j int) bool {
  309. return room.HaveClient[i].KickPoint < room.HaveClient[j].KickPoint
  310. })
  311. exe := []*oop.Account{}
  312. for _, cls := range room.Client {
  313. if InArray2(mem, cls.MID) && !cls.Frez && !cls.Limited {
  314. exe = append(exe, cls)
  315. }
  316. }
  317. room.HaveClient = exe
  318. if len(exe) != 0 {
  319. Backup := []string{}
  320. li, ok := backlist.Get(room.Id)
  321. if ok {
  322. mems := li.([]string)
  323. for _, l := range mems {
  324. if !InArray2(mem, l) && !InArray2(Backup, l) && !InArray2(pending, l) {
  325. Backup = append(Backup, l)
  326. }
  327. }
  328. }
  329. backlist.Set(room.Id, []string{})
  330. if len(Backup) != 0 {
  331. celek := len(Backup)
  332. no := 0
  333. bat := 5
  334. ClAct := len(exe)
  335. if ClAct != 0 {
  336. if celek < bat {
  337. for _, cl := range exe {
  338. cl.GetRecommendationIds()
  339. for _, mid := range Backup {
  340. oop.AddContact3(cl, mid)
  341. }
  342. fl, _ := cl.GetAllContactIds()
  343. bb := []string{}
  344. for _, mid := range Backup {
  345. if InArray2(fl, mid) {
  346. bb = append(bb, mid)
  347. Backup = Remove(Backup, mid)
  348. }
  349. }
  350. if len(bb) != 0 {
  351. cl.InviteIntoGroupNormal(room.Id, bb)
  352. }
  353. if len(Backup) == 0 {
  354. break
  355. }
  356. }
  357. } else {
  358. hajar := []string{}
  359. z := celek / bat
  360. y := z + 1
  361. for i := 0; i < y; i++ {
  362. if no >= ClAct {
  363. no = 0
  364. }
  365. client := exe[no]
  366. if i == z {
  367. hajar = Backup[i*bat:]
  368. } else {
  369. hajar = Backup[i*bat : (i+1)*bat]
  370. }
  371. if len(hajar) != 0 {
  372. client.GetRecommendationIds()
  373. for _, mid := range hajar {
  374. oop.AddContact3(client, mid)
  375. }
  376. fl, _ := client.GetAllContactIds()
  377. bb := []string{}
  378. for _, mid := range hajar {
  379. if InArray2(fl, mid) {
  380. bb = append(bb, mid)
  381. }
  382. }
  383. if len(bb) != 0 {
  384. client.InviteIntoGroupNormal(room.Id, bb)
  385. }
  386. }
  387. no += 1
  388. }
  389. }
  390. }
  391. }
  392. }
  393. } else {
  394. oop.SquadRoom = oop.RemoveRoom(oop.SquadRoom, room)
  395. }
  396. filterWar.clear()
  397. Nkick = &hashmap.HashMap{}
  398. filterop = &hashmap.HashMap{}
  399. oplist = []int64{}
  400. Ceknuke = &hashmap.HashMap{}
  401. cekoptime = []int64{}
  402. PurgeOP = []int64{}
  403. filtermsg = &hashmap.HashMap{}
  404. opjoin = []string{}
  405. room.ListInvited = []string{}
  406. Cekpurge = []int64{}
  407. AutoproN = false
  408. cekGo = []int64{}
  409. }
  410. }
  411. if !room.Leave.IsZero() {
  412. if now.Sub(room.Leave) >= 3*time.Second {
  413. room.Leave = time.Time{}
  414. if len(room.LeaveBack) != 0 {
  415. var cll *oop.Account
  416. if len(room.Client) != 0 {
  417. cll = room.Client[0]
  418. botleave = &hashmap.HashMap{}
  419. name, mem, invs := cll.GetChatList(room.Id)
  420. room.Name = name
  421. exe := []*oop.Account{}
  422. for _, cls := range room.Client {
  423. if InArray2(mem, cls.MID) && !InArray2(room.GoMid, cls.MID) {
  424. exe = append(exe, cls)
  425. }
  426. }
  427. inv := []string{}
  428. asu := room.LeaveBack
  429. room.LeaveBack = []string{}
  430. if len(exe) != 0 {
  431. for _, l := range asu {
  432. if !MemBan(room.Id, l) && !InArray2(inv, l) && !InArray2(mem, l) && !InArray2(invs, l) {
  433. inv = append(inv, l)
  434. }
  435. }
  436. if len(inv) != 0 {
  437. cls := exe
  438. for _, cl := range cls {
  439. if !cl.Limited {
  440. cl.GetRecommendationIds()
  441. for _, mid := range inv {
  442. oop.AddContact3(cl, mid)
  443. }
  444. fl, _ := cl.GetAllContactIds()
  445. bb := []string{}
  446. for _, mid := range inv {
  447. if InArray2(fl, mid) {
  448. bb = append(bb, mid)
  449. }
  450. }
  451. cl.InviteIntoGroupNormal(room.Id, bb)
  452. for _, mid := range bb {
  453. if MemUser(room.Id, mid) {
  454. cl.UnFriend(mid)
  455. }
  456. }
  457. break
  458. }
  459. }
  460. }
  461. }
  462. } else {
  463. oop.SquadRoom = oop.RemoveRoom(oop.SquadRoom, room)
  464. }
  465. }
  466. }
  467. }
  468. }
  469. for _, cl := range oop.Waitadd {
  470. v, ok := oop.BlockAdd.Get(cl.MID)
  471. if !ok {
  472. if now.Sub(cl.TimeBan) >= 1*time.Hour {
  473. cl.Limitadd = false
  474. cl.Add = 0
  475. cl.Lastadd = now
  476. oop.Waitadd = oop.RemoveCl(oop.Waitadd, cl)
  477. oop.BlockAdd.Del(cl.MID)
  478. }
  479. } else {
  480. if now.Sub(v.(time.Time)) >= 24*time.Hour {
  481. oop.BlockAdd.Del(cl.MID)
  482. cl.Limitadd = false
  483. cl.Add = 0
  484. cl.Lastadd = now
  485. oop.Waitadd = oop.RemoveCl(oop.Waitadd, cl)
  486. oop.BlockAdd.Del(cl.MID)
  487. }
  488. }
  489. }
  490. for _, cl := range ClientBot {
  491. if now.Sub(cl.Lastadd) >= 1*time.Hour {
  492. cl.Add = 0
  493. cl.Lastadd = now
  494. }
  495. if now.Sub(cl.Lastkick) >= 1*time.Hour {
  496. cl.TempKick = 0
  497. cl.TempInv = 0
  498. }
  499. }
  500. for _, cl := range oop.KickBans {
  501. v, ok := oop.GetBlock.Get(cl.MID)
  502. if !ok {
  503. if now.Sub(cl.TimeBan) >= 1*time.Hour {
  504. oop.KickBans = oop.RemoveCl(oop.KickBans, cl)
  505. cl.Limited = false
  506. cl.TempKick = 0
  507. cl.TempInv = 0
  508. cl.Frez = false
  509. oop.GetBlock.Del(cl.MID)
  510. }
  511. } else {
  512. if now.Sub(v.(time.Time)) >= 24*time.Hour {
  513. oop.GetBlock.Del(cl.MID)
  514. oop.KickBans = oop.RemoveCl(oop.KickBans, cl)
  515. cl.Limited = false
  516. cl.Frez = false
  517. cl.TempKick = 0
  518. cl.TempInv = 0
  519. cl.KickCount = 0
  520. cl.KickPoint = 0
  521. cl.InvCount = 0
  522. cl.CountDay = 0
  523. }
  524. }
  525. }
  526. for m, v := range oop.HashToMap(oop.GetBlockAdd) {
  527. cl := GetKorban(m)
  528. if cl.Limited {
  529. if now.Sub(v.(time.Time)) >= 1*time.Hour {
  530. cl.Limitadd = false
  531. oop.GetBlockAdd.Del(cl.MID)
  532. }
  533. }
  534. }
  535. if now.Sub(aclear) >= 30*time.Second {
  536. filterop = &hashmap.HashMap{}
  537. Nkick = &hashmap.HashMap{}
  538. filterWar.clear()
  539. oplist = []int64{}
  540. timeSend = []int64{}
  541. Ceknuke = &hashmap.HashMap{}
  542. cekoptime = []int64{}
  543. filtermsg = &hashmap.HashMap{}
  544. aclear = now
  545. PurgeOP = []int64{}
  546. Cekpurge = []int64{}
  547. opjoin = []string{}
  548. cekGo = []int64{}
  549. AutoproN = false
  550. }
  551. if now.Sub(TimeSave) >= 3*time.Hour {
  552. SaveBackup()
  553. TimeBackup = now
  554. }
  555. if !TimeBackup.IsZero() {
  556. BackSeave()
  557. }
  558. }
  559. func back(to, u string) {
  560. li, ok := backlist.Get(to)
  561. if ok {
  562. list := li.([]string)
  563. if !InArray2(list, u) {
  564. list = append(list, u)
  565. }
  566. backlist.Set(to, list)
  567. } else {
  568. list := []string{u}
  569. backlist.Set(to, list)
  570. }
  571. }
  572. func Purgesip(Group string, cl *oop.Account) {
  573. defer panicHandle("purgesip")
  574. mem := make(chan []string)
  575. go func(m chan []string) {
  576. memlistss := []string{}
  577. _, memlists := cl.GetGroupMember(Group)
  578. for target := range memlists {
  579. if MemBan(Group, target) {
  580. memlistss = append(memlistss, target)
  581. }
  582. }
  583. m <- memlistss
  584. }(mem)
  585. Cans := oop.Actor(Group)
  586. ClAct := len(Cans)
  587. hajar := []string{}
  588. var client *oop.Account
  589. memlist := <-mem
  590. celek := len(memlist)
  591. if celek > MaxKick {
  592. if ClAct != 0 {
  593. z := celek / MaxKick
  594. y := z + 1
  595. no := 0
  596. for i := 0; i < y; i++ {
  597. if no >= ClAct {
  598. no = 0
  599. }
  600. if i != 0 {
  601. client = Cans[no]
  602. } else {
  603. client = cl
  604. }
  605. if i == z {
  606. hajar = memlist[i*MaxKick:]
  607. } else {
  608. hajar = memlist[i*MaxKick : (i+1)*MaxKick]
  609. }
  610. if len(hajar) != 0 {
  611. for _, target := range hajar {
  612. go client.DeleteOtherFromChats(Group, target)
  613. }
  614. }
  615. no += 1
  616. }
  617. } else if !cl.Limited {
  618. for _, target := range memlist {
  619. go cl.DeleteOtherFromChats(Group, target)
  620. }
  621. }
  622. } else if !cl.Limited {
  623. for _, target := range memlist {
  624. go cl.DeleteOtherFromChats(Group, target)
  625. }
  626. }
  627. }
  628. func InArrayChat(arr []*talkservice.Chat, str *talkservice.Chat) bool {
  629. for _, tar := range arr {
  630. if tar.ChatMid == str.ChatMid {
  631. return true
  632. }
  633. }
  634. return false
  635. }
  636. //
  637. func clone(p *oop.Account, pp string, vp string, co string, cv string, name string, status string) {
  638. if pp != "" && vp != "" {
  639. err := p.UpdateVideoProfile(vp)
  640. if err == nil {
  641. err := p.UpdatePictureProfile(pp, "v")
  642. if err != nil {
  643. fmt.Println(err)
  644. }
  645. } else {
  646. fmt.Println(err)
  647. }
  648. os.Remove(vp)
  649. os.Remove(pp)
  650. } else if pp != "" {
  651. err := p.UpdatePictureProfile(pp, "p")
  652. if err != nil {
  653. fmt.Println(err)
  654. }
  655. os.Remove(pp)
  656. }
  657. if co != "" && cv == "" {
  658. err := p.UpdateCover(co)
  659. if err != nil {
  660. fmt.Println(err)
  661. }
  662. os.Remove(co)
  663. } else if co != "" && cv != "" {
  664. p.UpdateCoverVideo(cv)
  665. err := p.UpdateCoverWithVideo(co)
  666. if err != nil {
  667. fmt.Println(err)
  668. }
  669. os.Remove(cv)
  670. os.Remove(co)
  671. }
  672. p.UpdateProfileName(name)
  673. p.UpdateProfileBio(status)
  674. p.Namebot = name
  675. }